数字系统设计练习(一)—— 闪烁的小灯

一、实验硬软件环境:

  1. EDA软件:Vivado2019
  2. 实验开发板:Basys3 FPGA套件

二、实验内容:

  实现如下电路功能:当开关开启,灯泡按1s的间隔闪烁;开关关闭,则灯泡关闭。使用实验板上的按键模拟开关,led模拟灯泡,时钟使用实验板提供的clk。参考实验板的管脚文件编写约束文件。

  注意,LED部分的电路图如左图所示,当FPGA输出为高电平时,相应的LED点亮;否则,LED熄灭。拨码开关的电路如右图所示,当开关打到下档时,表示FPGA的输入为低电平。

                         

 三、具体实现

  1. 思路分析:开发板的晶振为100Mhz,则其周期为10ns,初值为0的计数器自加1到100,000,000时为1s。
  2. 设计源码:
     1 module led(
     2      input switch,
     3     input clk,
     4     output reg led,
     5 );
     6 
     7 reg [28:0] count;
     8 
     9 always @(posedge clk)
    10 begin
    11     if(!switch)
    12         begin
    13             count <= 0;
    14             led <= 0;
    15         end
    16     else
    17         begin
    18             if(count == 29'd100_000_000)
    19                 begin
    20                     count <= 0;
    21                     led <= ~led;
    22                 end
    23             else
    24                 begin
    25                     count <= count + 1;
    26                     led <= led;
    27                 end
    28         end
    29 end
  3. 仿真代码
     1 `timescale 1ns / 1ps
     2 
     3 module led_tb;
     4     reg switch;
     5     reg clk;
     6     wire led;
     7     
     8     led uut(
     9         .switch(switch),
    10         .clk(clk),
    11         .led(led)
    12     );
    13     
    14     initial
    15     begin
    16         switch = 0;
    17         clk = 0;
    18         
    19         #100 switch = 1;
    20         #100;
    21     end
    22     
    23     always #50 clk = ~clk;
    24 endmodule
  4.  约束文件
    1 set_property PACKAGE_PIN V17 [get_ports switch]
    2 set_property IOSTANDARD LVCMOS33 [get_ports switch]
    3 set_property PACKAGE_PIN U16 [get_ports led]
    4 set_property IOSTANDARD LVCMOS33 [get_ports led]
    5 set_property PACKAGE_PIN W5 [get_ports clk]
    6 set_property IOSTANDARD LVCMOS33 [get_ports clk]
  5. 总结:时序逻辑使用 always #50 clk = ~clk 这条语句来产生一个不断重复的周期为100个的时钟信号clk。
原文地址:https://www.cnblogs.com/mantha/p/13510222.html