首页 > 代码库 > 【黑金教程笔记之002】【建模篇】【Lab 01 永远的流水灯】—笔记&勘误

【黑金教程笔记之002】【建模篇】【Lab 01 永远的流水灯】—笔记&勘误

学习并行操作的思想。

 

 

勘误001:

Page 17,模块图下方,“扫描频配置定为100Hz”应为10Hz。

 

勘误002:

Page 17,最后一行

“10ms”应为100ms;“2.5ms”应为25ms;(ps:这里用1000ms,每个led亮250ms效果比较明显)

源码如下:

 1 /************************************************* 2 module name:led0_module.v 3 function:drive led on for 25ms; 4  5 by yf.x 6 2014-11-3 7 **************************************************/ 8 module led0_module( 9 CLK,RST_n,LED010 );11 12 input CLK,RST_n;13 output LED0;14 15 /****************************************/16 //DE2-115 has 50MHz oc,so 50M*1s=50_000_00017 parameter T1000ms=26d50_000_000;18 /****************************************/19 //1000ms counter20 21 reg [25:0]count1;22 23 always @(posedge CLK or negedge RST_n)24 if(!RST_n)25   count1<=26d0;26 else if(count1==T1000ms)27   count1<=26d0;28 else29   count1<=count1+1b1;30   31 /***************************************/32 // control led on for 100ms33 34 reg rLED;35 36 always @(posedge CLK or negedge RST_n)37 if(!RST_n)38   rLED<=1b0;39 else if(count1>=26d0 && count1<26d1_2500_000)40   rLED<=1b1;41 else42   rLED<=1b0;43   44 /***************************************/45 46 assign LED0=rLED;47 48 endmodule       49 50   51       
 1 /************************************************* 2 module name:led1_module.v 3 function:drive led on for 25ms; 4  5 by yf.x 6 2014-11-3 7 **************************************************/ 8 module led1_module( 9 CLK,RST_n,LED110 );11 12 input CLK,RST_n;13 output LED1;14 15 /****************************************/16 //DE2-115 has 50MHz oc,so 50M*1=50_000_00017 parameter T1000ms=26d50_000_000;18 /****************************************/19 //1000ms counter20 21 reg [25:0]count1;22 23 always @(posedge CLK or negedge RST_n)24 if(!RST_n)25   count1<=26d0;26 else if(count1==T1000ms)27   count1<=26d0;28 else29   count1<=count1+1b1;30   31 /***************************************/32 // control led on for 100ms33 34 reg rLED;35 36 always @(posedge CLK or negedge RST_n)37 if(!RST_n)38   rLED<=1b0;39 else if(count1>=26d1_2500_000 && count1<26d2_5000_000)40   rLED<=1b1;41 else42   rLED<=1b0;43   44 /***************************************/45 46 assign LED1=rLED;47 48 endmodule       49 50   51       
 1 /************************************************* 2 module name:led2_module.v 3 function:drive led on for 25ms; 4  5 by yf.x 6 2014-11-3 7 **************************************************/ 8 module led2_module( 9 CLK,RST_n,LED210 );11 12 input CLK,RST_n;13 output LED2;14 15 /****************************************/16 //DE2-115 has 50MHz oc,so 50M*1=50_000_00017 parameter T1000ms=26d50_000_000;18 /****************************************/19 //1000ms counter20 21 reg [25:0]count1;22 23 always @(posedge CLK or negedge RST_n)24 if(!RST_n)25   count1<=26d0;26 else if(count1==T1000ms)27   count1<=26d0;28 else29   count1<=count1+1b1;30   31 /***************************************/32 // control led on for 100ms33 34 reg rLED;35 36 always @(posedge CLK or negedge RST_n)37 if(!RST_n)38   rLED<=1b0;39 else if(count1>=26d2_5000_000 && count1<26d3_7500_000)40   rLED<=1b1;41 else42   rLED<=1b0;43   44 /***************************************/45 46 assign LED2=rLED;47 48 endmodule       49 50   51       
 1 /************************************************* 2 module name:led3_module.v 3 function:drive led on for 25ms; 4  5 by yf.x 6 2014-11-3 7 **************************************************/ 8 module led3_module( 9 CLK,RST_n,LED310 );11 12 input CLK,RST_n;13 output LED3;14 15 /****************************************/16 //DE2-115 has 50MHz oc,so 50M*1=50_000_00017 parameter T1000ms=26d50_000_000;18 /****************************************/19 //1000ms counter20 21 reg [25:0]count1;22 23 always @(posedge CLK or negedge RST_n)24 if(!RST_n)25   count1<=26d0;26 else if(count1==T1000ms)27   count1<=26d0;28 else29   count1<=count1+1b1;30   31 /***************************************/32 // control led on for 100ms33 34 reg rLED;35 36 always @(posedge CLK or negedge RST_n)37 if(!RST_n)38   rLED<=1b0;39 else if(count1>=26d3_7500_000 && count1<26d50_000_000)40   rLED<=1b1;41 else42   rLED<=1b0;43   44 /***************************************/45 46 assign LED3=rLED;47 48 endmodule       49 50   51       
 1 /********************************* 2 module name:top.v 3 function:control 4 led on for 250ms 4 (for DE2-115) 5 pin assignments: 6 --------------------------------- 7 CLK----------------------CLOCK_50 8 RST_n--------------------KEY[0] 9 LED(0-3)-----------------LEDG[0-3]10 ---------------------------------11 12 yf.x13 2014-11-0314 **********************************/15 16 module top(17 CLK,RST_n,LED18 );19 20 input CLK,RST_n;21 output [3:0]LED;22 23 /*********************************/24 25 wire [3:0]LED_out;26 27 led0_module u0(28 .CLK(CLK),29 .RST_n(RST_n),30 .LED0(LED_out[0])31 );32 33 /*********************************/34 35 led1_module u1(36 .CLK(CLK),37 .RST_n(RST_n),38 .LED1(LED_out[1])39 );40 41 /*********************************/42 43 led2_module u2(44 .CLK(CLK),45 .RST_n(RST_n),46 .LED2(LED_out[2])47 );48 49 /*********************************/50 51 led3_module u3(52 .CLK(CLK),53 .RST_n(RST_n),54 .LED3(LED_out[3])55 );56 57 /*********************************/58 59 assign LED=LED_out;60 61 endmodule

 

【黑金教程笔记之002】【建模篇】【Lab 01 永远的流水灯】—笔记&勘误