zoukankan      html  css  js  c++  java
  • 【黑金教程笔记之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,LED0
    10 );
    11 
    12 input CLK,RST_n;
    13 output LED0;
    14 
    15 /****************************************/
    16 //DE2-115 has 50MHz oc,so 50M*1s=50_000_000
    17 parameter T1000ms=26'd50_000_000;
    18 /****************************************/
    19 //1000ms counter
    20 
    21 reg [25:0]count1;
    22 
    23 always @(posedge CLK or negedge RST_n)
    24 if(!RST_n)
    25   count1<=26'd0;
    26 else if(count1==T1000ms)
    27   count1<=26'd0;
    28 else
    29   count1<=count1+1'b1;
    30   
    31 /***************************************/
    32 // control led on for 100ms
    33 
    34 reg rLED;
    35 
    36 always @(posedge CLK or negedge RST_n)
    37 if(!RST_n)
    38   rLED<=1'b0;
    39 else if(count1>=26'd0 && count1<26'd1_2500_000)
    40   rLED<=1'b1;
    41 else
    42   rLED<=1'b0;
    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,LED1
    10 );
    11 
    12 input CLK,RST_n;
    13 output LED1;
    14 
    15 /****************************************/
    16 //DE2-115 has 50MHz oc,so 50M*1=50_000_000
    17 parameter T1000ms=26'd50_000_000;
    18 /****************************************/
    19 //1000ms counter
    20 
    21 reg [25:0]count1;
    22 
    23 always @(posedge CLK or negedge RST_n)
    24 if(!RST_n)
    25   count1<=26'd0;
    26 else if(count1==T1000ms)
    27   count1<=26'd0;
    28 else
    29   count1<=count1+1'b1;
    30   
    31 /***************************************/
    32 // control led on for 100ms
    33 
    34 reg rLED;
    35 
    36 always @(posedge CLK or negedge RST_n)
    37 if(!RST_n)
    38   rLED<=1'b0;
    39 else if(count1>=26'd1_2500_000 && count1<26'd2_5000_000)
    40   rLED<=1'b1;
    41 else
    42   rLED<=1'b0;
    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,LED2
    10 );
    11 
    12 input CLK,RST_n;
    13 output LED2;
    14 
    15 /****************************************/
    16 //DE2-115 has 50MHz oc,so 50M*1=50_000_000
    17 parameter T1000ms=26'd50_000_000;
    18 /****************************************/
    19 //1000ms counter
    20 
    21 reg [25:0]count1;
    22 
    23 always @(posedge CLK or negedge RST_n)
    24 if(!RST_n)
    25   count1<=26'd0;
    26 else if(count1==T1000ms)
    27   count1<=26'd0;
    28 else
    29   count1<=count1+1'b1;
    30   
    31 /***************************************/
    32 // control led on for 100ms
    33 
    34 reg rLED;
    35 
    36 always @(posedge CLK or negedge RST_n)
    37 if(!RST_n)
    38   rLED<=1'b0;
    39 else if(count1>=26'd2_5000_000 && count1<26'd3_7500_000)
    40   rLED<=1'b1;
    41 else
    42   rLED<=1'b0;
    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,LED3
    10 );
    11 
    12 input CLK,RST_n;
    13 output LED3;
    14 
    15 /****************************************/
    16 //DE2-115 has 50MHz oc,so 50M*1=50_000_000
    17 parameter T1000ms=26'd50_000_000;
    18 /****************************************/
    19 //1000ms counter
    20 
    21 reg [25:0]count1;
    22 
    23 always @(posedge CLK or negedge RST_n)
    24 if(!RST_n)
    25   count1<=26'd0;
    26 else if(count1==T1000ms)
    27   count1<=26'd0;
    28 else
    29   count1<=count1+1'b1;
    30   
    31 /***************************************/
    32 // control led on for 100ms
    33 
    34 reg rLED;
    35 
    36 always @(posedge CLK or negedge RST_n)
    37 if(!RST_n)
    38   rLED<=1'b0;
    39 else if(count1>=26'd3_7500_000 && count1<26'd50_000_000)
    40   rLED<=1'b1;
    41 else
    42   rLED<=1'b0;
    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.x
    13 2014-11-03
    14 **********************************/
    15 
    16 module top(
    17 CLK,RST_n,LED
    18 );
    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
  • 相关阅读:
    Python-学习-小例子练习
    Python-学习-import语句导入模块
    Python-类-函数参数-takes 0 positional arguments but 1 was given
    虚拟现实-VR-UE4-构建光照显示光照构建失败,Swarm启动失败
    Qt 实现脉搏检测-2,简陋的功能产品
    Qt 蓝牙部分翻译
    Qt QLabel 播放GIF动画
    Qt 实现脉搏检测-1-心跳曲线部分
    C++学习014函数值传递和地址传递
    Ubuntu 普通用户无法启动Google chrome
  • 原文地址:https://www.cnblogs.com/halflife/p/4075322.html
Copyright © 2011-2022 走看看