首页 > 其他分享 >基于EP4CE6E22C8N流水灯实验详解2

基于EP4CE6E22C8N流水灯实验详解2

时间:2023-01-15 23:44:13浏览次数:38  
标签:led EP4CE6E22C8N clk sys 详解 流水 模块 rst 例化

测试文件:testbench
这一个文件适用于测试前面写好的代码能否正确运行。在编写好执行的流水灯代码之后,要使用modelsim进行仿真时,需要编写一个testbench文件。这一个文件适用于测试前面写好的代码能否正确运行。
在正常开发工作中,可能手中没有实物电路板,那么可以采用这一种方法对设计好的FPGA代码进行仿真测试。

这一个tb文件,实质是对我们需要测试的模块进行例化。

代码如下:


//下面定义仿真单位和仿真精度:仿真单位1ns,精度为1ns
`timescale 1ns/1ns
//假如有下列一步:#10,表示延时10个单位,上面是1个单位为1ns,则延时10ns

module flow_led_tb;//该模块没有输入,括号省略

parameter T = 20;//定义周期为20ns,晶振一般为50MHz

//如果在always或者initial里面赋值,则定义成reg
reg sys_clk;
reg sys_rst_n;

//在tb模块里面不会对led寄存器赋值,所以定义成wire信号
wire [3:0] led;

//对复位和数值初始化,能让后面例化的模块可以有初始值。
initial begin
sys_clk = 1'b0;
sys_rst_n = 1'b0;
#(T+1) //延时1+T个单位时间,然后把复位拉高,结束复位
sys_rst_n = 1'b1;
end

//下面利用always实现50Mhz的时钟
always #(T/2) sys_clk = ~sys_clk;
//先延时10ns,然后时钟翻转,这样就可以产生周期为20ns的时钟

//下面是对被测试模块例化,括号里面输入被例化模块的输入端口
flow_led u0_flow_led (
//表示为被例化模块的sys_clk接口和tb模块的sys_clk连接
.sys_clk (sys_clk ),
//表示为被例化模块的sys_rst_n接口和tb模块的sys_rst_n连接
.sys_rst_n (sys_rst_n),
//表示为被例化模块的led寄存器接口和tb模块的led连接
.led (led )
);

endmodule


image
这是对编写好的测试和被测试文件进行编译。

image
选择对文件仿真
image
仿真结果:开始的21ns为复位时间,然后开始运行。后续每次流水灯状态跳变的间隔都是220ns,每11个T为一次反转周期(原来是200ms反转一次,因为仿真5ms这么短的时间电平信号是不会跳变的,所以后面修该成220ns反转一次)。

标签:led,EP4CE6E22C8N,clk,sys,详解,流水,模块,rst,例化
From: https://www.cnblogs.com/chapman-fpga/p/17054429.html

相关文章

  • Kubernetes(k8s) YAML文件详解
    原文网址:https://www.cnblogs.com/liugp/p/16361487.html目录一、yaml文件简介1)yaml的语法规则:2)在Kubernetes中,只需要知道两种结构类型即可:二、yaml常见语法1......
  • 【转载】C# DataSet和DataTable详解
    1、创建DataSet对象:DataSetds=newDataSet("DataSetName");2、查看调用SqlDataAdapter.Fill创建的结构   da.Fill(ds,"Orders");   DataTabletbl=ds.Tab......
  • 基于EP4CE6E22C8N流水灯实验详解1
    器材准备:EP4CE6E22C8N板子,下载器。电路图:逻辑框架因为这是一个流水灯,所以需要有一个时序逻辑关系,也就需要一个时钟信号。所以需要给模块设计一个时钟输入信号。此外,如......
  • (转)Golang - new和make的使用和区别(示例详解)
    原文:https://www.cnblogs.com/beatleC/p/16081832.html前言:Go语言中new和make是内置函数,主要用来创建分配类型内存(相同点:堆上),其功能相似,却有本质区别。引入:变量的声明v......
  • QT学习之QMainWindow详解
    文章目录​​1、菜单栏​​​​2、工具栏​​​​3、状态栏​​​​4、铆接部件​​​​5、核心部件(中心部件)​​​​6、资源文件​​有关QT的学习我们会采取连载更新,传送门......
  • [disruptor详解]01-disruptor原理
    ​​disruptor详解​​​​disruptorCpp-IPC​​disruptor原理使用循环队列,且要求队列大小为2的N次方,以满足位运算快速计算索引的要求(比取模速度快)使用原子变量记录生产者......
  • win10 vmware虚拟机蓝屏怎么办 win10 vmware虚拟机蓝屏解决方法【详解】
    原文地址:https://product.pconline.com.cn/itbk/software/dnyw/1562/15626723.html注:按照第一种方法已解决蓝屏问题最近有朋友出现win10vmware虚拟机蓝屏的情况应该怎么......
  • upload-labs通关详解
    upload-labs通关详解一、Pass-01查看源码,发现变量前有var,可以代码语言是JSsubstring():裁剪字符串lastIndexOf():返回某个子字符串在字符串中最后出现的位置varext_name=......
  • git add 命令详解
    1.前言2.gitadd基本操作3.gitadd命令参数4.gitadd背后做了什么1.前言众所周知,git中有工作区、暂存区、版本库三大组成部分工作区:电脑中能看到的目录,也就是......
  • git checkout 命令详解
    1.前言2.创建分支3.切换分支4.撤销更改1.前言gitcheckout命令用于创建、切换分支或恢复工作树文件。最常用的两种用法​​#切换分支​​​​gitcheckout<bra......