一、实验硬软件环境:
- EDA软件:Vivado2019
- 实验开发板: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 `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
- 仿真代码
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
- 仿真波形图
- 约束文件
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]
四、 assign总结
- 用途:用于描述组合逻辑功能;
- 特定:
- assign语句等式右边变量发生变化则语句执行;
- 可以多次执行,并始终处于活跃状态;
- 可以并发执行;
- 需要注意的是,assign语句中,等式左边的赋值对象必须是wire类型!