数字系统设计练习(四)—— assign语句的使用

一、实验硬软件环境:

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

二、实验内容:

  实现的电路功能为:当开关开启,led点亮;开关关闭,则led灯关闭,将图下描述方式改为使用assign持续复制语句描述电路逻辑功能。

module digt_design_example(
    key, led
    );

    input key;
    output led;

    reg led;

    always @(key)
    begin
        if(key == 1)
            led = 1;
        else
            led = 0;
    end
endmodule

三、具体实现

  1. 设计源码
     1 `timescale 1ns / 1ps
     2 //////////////////////////////////////////////////////////////////////////////////
     3 // Company:
     4 // Engineer:
     5 //
     6 // Create Date: 2020/08/16 18:18:37
     7 // Design Name:
     8 // Module Name: led
     9 // Project Name:
    10 // Target Devices:
    11 // Tool Versions:
    12 // Description:
    13 //
    14 // Dependencies:
    15 //
    16 // Revision:
    17 // Revision 0.01 - File Created
    18 // Additional Comments:
    19 //
    20 //////////////////////////////////////////////////////////////////////////////////
    21 
    22 
    23 module led(
    24     input key,
    25     output led
    26     );
    27 
    28     assign led = key;
    29 
    30 endmodule
    View Code
  2. 仿真代码
     1 `timescale 1ns / 1ps
     2 //////////////////////////////////////////////////////////////////////////////////
     3 // Company:
     4 // Engineer:
     5 //
     6 // Create Date: 2020/08/16 18:20:30
     7 // Design Name:
     8 // Module Name: led_tb
     9 // Project Name:
    10 // Target Devices:
    11 // Tool Versions:
    12 // Description:
    13 //
    14 // Dependencies:
    15 //
    16 // Revision:
    17 // Revision 0.01 - File Created
    18 // Additional Comments:
    19 //
    20 //////////////////////////////////////////////////////////////////////////////////
    21 
    22 
    23 module led_tb;
    24     reg key;
    25     wire led;
    26 
    27     led uut(.key(key), .led(led));
    28 
    29     initial
    30     begin
    31         key = 0;
    32 
    33         #100 key = 1;
    34         #100 key = 0;
    35         #100;
    36     end
    37 endmodule
    View Code
  3. 仿真波形图

     

  4. 约束文件
    1 set_property PACKAGE_PIN V17 [get_ports key]
    2 set_property IOSTANDARD LVCMOS33 [get_ports key]
    3 set_property PACKAGE_PIN U16 [get_ports led]
    4 set_property IOSTANDARD LVCMOS33 [get_ports led]
    View Code

四、 assign总结

  1. 用途:用于描述组合逻辑功能;
  2. 特定:
    • assign语句等式右边变量发生变化则语句执行;
    • 可以多次执行,并始终处于活跃状态;
    • 可以并发执行;
  3. 需要注意的是,assign语句中,等式左边的赋值对象必须是wire类型!

 

posted on 2020-08-17 11:19  不许动我的松子  阅读(1157)  评论(0编辑  收藏  举报

导航