【FPGA】高云FPGA之数字钟实验->HC595驱动数码管(三)

简介: 【FPGA】高云FPGA之数字钟实验->HC595驱动数码管

【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、在线调试

当系统出现问题运行不正常我们可以通过外部硬件示波器或者逻辑分析仪进行实际引脚信号抓取分析

相关文章
|
1月前
|
芯片 异构计算
【FPGA】高云FPGA之数字钟实验->HC595驱动数码管(一)
【FPGA】高云FPGA之数字钟实验->HC595驱动数码管
|
1月前
|
存储 芯片 异构计算
【FPGA】高云FPGA之数字钟实验->HC595驱动数码管(二)
【FPGA】高云FPGA之数字钟实验->HC595驱动数码管
|
11天前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
28 7
|
3月前
|
算法 异构计算
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
|
2月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
31 2
|
4月前
|
算法 5G 数据处理
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
51 0
|
4月前
|
算法 异构计算 索引
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
46 1
|
2月前
|
算法 异构计算
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
16 0
|
8天前
|
存储 算法 异构计算
m基于FPGA的多功能信号发生器verilog实现,包含testbench,可以调整波形类型,幅度,频率,初始相位等
使用Vivado 2019.2仿真的DDS信号发生器展示了正弦、方波、锯齿波和三角波的输出,并能调整幅度和频率。DDS技术基于高速累加器、查找表和DAC,通过频率控制字和初始相位调整产生各种波形。Verilog程序提供了一个TEST模块,包含时钟、复位、信号选择、幅度和频率控制输入,以生成不同波形。
28 18
|
8天前
|
算法 计算机视觉 异构计算
基于FPGA的图像累积直方图verilog实现,包含tb测试文件和MATLAB辅助验证
该内容展示了FPGA实现图像累积直方图的算法。使用Vivado2019.2和matlab2022a,通过FPGA的并行处理能力优化图像处理。算法基于像素值累加分布,计算图像中像素值小于等于特定值的像素个数。核心代码为`test_image`模块,读取二进制图像文件并传递给`im_hist`单元,生成直方图和累积直方图。

热门文章

最新文章