首页 > 代码库 > 【黑金教程笔记之003】【建模篇】【Lab 02 闪耀灯和流水灯】—笔记
【黑金教程笔记之003】【建模篇】【Lab 02 闪耀灯和流水灯】—笔记
(1) 扫描频率和闪耀频率?
模块:
/****************************************module name:flash_modulefunction:flash a led at 10Hzby yf.x2014-11-4***************/module flash_module(CLK,RST_n,LED);input CLK,RST_n;output LED;/*********************************///DE2-115 use 50MHz osc, 50M*0.05-1=2_499_999parameter T50ms=22‘d2_499_999;/*********************************/reg [21:0]count1;always @(posedge CLK or negedge RST_n)if(!RST_n) count1<=22‘d0;else if(count1==T50ms) count1<=22‘d0;else count1<=count1+1‘b1;/************************************/reg rLED;always @(posedge CLK or negedge RST_n)if(!RST_n) rLED<=1‘b0;else if(count1==T50ms) rLED<=~rLED;/*********************************/assign LED=rLED;endmodule
1 /*********************************** 2 module name:run_module 3 function:3 led light on one bye one at 4 each 100ms. 5 6 by yf.x 7 2014-11-04 8 ***********************************/ 9 10 module run_module(11 CLK,12 RST_n,13 LED14 );15 16 input CLK;17 input RST_n;18 output [2:0]LED;19 20 /****************************************/21 //DE2-115 use 50MHz osc,50M*0.001-1=49_99922 parameter T1ms=16‘d49_999;23 24 /****************************************/25 26 reg [15:0]count1;27 28 always @(posedge CLK or negedge RST_n)29 if(!RST_n)30 count1<=16‘d0;31 else if(count1==T1ms)32 count1<=16‘d0;33 else34 count1<=count1+1‘b1;35 36 /**************************************/37 38 reg [9:0] count_ms;39 40 always @(posedge CLK or negedge RST_n)41 if(!RST_n)42 count_ms<=10‘d0;43 else if(count_ms==10‘d100) //100ms 44 count_ms<=10‘d0;45 else if(count1==T1ms)46 count_ms<=count_ms+1‘b1;47 48 /*************************************/49 50 reg [2:0]rLED;51 52 always @(posedge CLK or negedge RST_n)53 if(!RST_n)54 rLED<=3‘b001;55 else if(count_ms==10‘d100)56 begin57 if(rLED==3‘b000)58 rLED<=3‘b001;59 else60 rLED<={rLED[1:0],1‘b0};61 end62 63 /*************************************/64 65 assign LED=rLED;66 67 endmodule 68 69 70
1 /**************************************** 2 module name:mix_module 3 function:top module,flash 1 led and run 3 led 4 5 pin assignments(for DE2_115) 6 ---------------------------------------- 7 CLK------------------------CLOCK_50 8 RST_n----------------------KEY[0] 9 Flash_LED------------------LEDG[3]10 Run_LED[2:0]---------------LEDG[2:0]11 12 *****************************************/13 14 module mix_module(15 CLK,16 RST_n,17 Flash_LED,18 Run_LED19 );20 21 input CLK;22 input RST_n;23 output Flash_LED;24 output [2:0]Run_LED;25 26 /**************************************/27 28 wire flash_led;29 30 flash_module u0(31 .CLK(CLK),32 .RST_n(RST_n),33 .LED(flash_led)34 );35 36 /************************************/37 38 wire [2:0] run_led;39 40 run_module u1(41 .CLK(CLK),42 .RST_n(RST_n),43 .LED(run_led)44 );45 46 /***********************************/47 48 assign Flash_LED=flash_led;49 assign Run_LED=run_led;50 51 /************************************/52 53 endmodule
实验二说明:
(1) flash_module.v是一个闪烁灯模块,闪烁频率为10Hz。
(2) run_module.v是一个流水灯模块,扫描频率为3.3Hz。基本编程技巧:1ms的计数器->100ms的计数器->移位操作。
实验二完成框图:
实验二结论:
思维倾向“并行操作”对Verilog hdl语言的理解非常重要。
实验二疑问:
(1)run_module.v模块里为何先写一个1ms的计数器,再用1ms的驱动完成一个100ms的计数器,而不是直接写一个100ms的计数器?
【黑金教程笔记之003】【建模篇】【Lab 02 闪耀灯和流水灯】—笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。