【FPGA】高云FPGA之数字钟实验->HC595驱动数码管(二)https://developer.aliyun.com/article/1472643
3、分析和综合
当逻辑输入设计完成后需要对其进行验证,该部分由软件部分进行验证,如果逻辑输入有问题需要检查语法错误或则重新设计设计输入
4、功能仿真
当分析和综合通过后应该进行功能性验证,针对项目设计定义的功能使用设计的逻辑输入验证其功能能否实现,一般的做法都是通过功能仿真的方式进行验证,比如软件逻辑分析仪,modelsim、vivado等软件自带的仿真工具进行仿真验证
功能仿真也称为行为仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电路与理想情况是否一致。也可以叫做RTL仿真(test bench)
6.1 hex8模块仿真
`timescale 1ns/1ns `define clk_period 20 module hex8_tb; reg clk; //50M reg reset_n; reg en; //数码管显示使能,1使能_0关闭 reg [31:0]disp_data; wire [7:0] sel;//数码管位选(选择当前要显示的数码管) wire [6:0] seg;//数码管段选(当前要显示的内容) hex8 hex8( .clk(clk), .reset_n(reset_n), .en(en), .disp_data(disp_data), .sel(sel), .seg(seg) ); initial clk = 1; always#(`clk_period/2) clk = ~clk; initial begin reset_n = 1'b0; en = 1; disp_data = 32'h12345678; #(`clk_period*20); reset_n = 1; #(`clk_period*20); #20000000; disp_data = 32'h87654321; #20000000; disp_data = 32'h89abcdef; #20000000; $stop; end endmodule
6.2 HC595模块
`timescale 1ns/1ns `define clk_period 20 module hc595_tb; reg clk; reg reset_n; reg [15 : 0] data; //data to send reg s_en; //send en wire sh_cp; //shift clock wire st_cp; //latch data clock wire ds; //shift serial data hc595 hc595_mod( .clk(clk), .reset_n(reset_n), .data(data), .s_en(s_en), .sh_cp(sh_cp), .st_cp(st_cp), .ds(ds) ); initial clk = 1; always#(`clk_period/2) clk = ~clk; initial begin reset_n = 1'b0; s_en = 1; data = 16'b1010_1111_0110_0101; #(`clk_period*20); reset_n = 1; #(`clk_period*20); #5000; data = 16'b0101_0101_1010_0101; #5000; $stop; end endmodule
5、布局布线
当我们的IO可以开始分配了我们首先需要分配IO,如果当前还没到IO分配的时候我们可以将IO分配放在最后,当IO分配完成后我们就可以通过软件进行布局布线,在芯片内部生成芯片电路
6、时序仿真
时序仿真也称为布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,能较好地反映芯片的实际工作情况,当时序仿真不通过的时候可能还会设计到时序约束的一个过程(在比较复杂的设计中也需要用到);这个在上一个步骤(功能仿真中)我们已经完成了时序仿真的波形查看
7、IO分配以及配置文件(bit流文件)的生成
如果在布局布线时未进行IO分配在该步骤进行IO分配并生成BIT流文件,这里我们直接查看小梅哥给出的excel文档,填写我们需要输出的时钟引脚;
//Copyright (C)2014-2023 Gowin Semiconductor Corporation. //All rights reserved. //File Title: Physical Constraints file //Tool Version: V1.9.9 (64-bit) //Part Number: GW5A-LV25UG324C2/I1 //Device: GW5A-25 //Device Version: A //Created Time: Sat 02 17 19:32:14 2024 IO_LOC "ds" F4; IO_PORT "ds" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_LOC "st_cp" F3; IO_PORT "st_cp" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_LOC "sh_cp" H4; IO_PORT "sh_cp" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_LOC "reset_n" B16; IO_PORT "reset_n" PULL_MODE=NONE BANK_VCCIO=3.3; IO_LOC "clk" T9; IO_PORT "clk" PULL_MODE=NONE BANK_VCCIO=3.3;
到这里软件的模拟仿真验证就完成了最后是烧录到板子上进行测试验证
8、配置(烧录)FPGA
时序通过了后需要通过硬件进行验证也就是最后一步的实物验证
9、在线调试
当系统出现问题运行不正常我们可以通过外部硬件示波器或者逻辑分析仪进行实际引脚信号抓取分析