FPGA培训专家 V3学院 FPGA专家 带你学习Verilog语言top_down书写技巧

此文章为原创出自 V3学院 www.v3edu.org,FPGA培训专家

为了提高我们代码的复用率,我们可以将不同的功能的代码分模块书写,然后在顶层连线即可。我们举一个简单的例子,如下程序,我们实现的是LED流水。

我们在led模块中先将系统时钟分频为1HZ的时钟,然后用分频后的时钟控制LED灯的流水,但我的分频和LED灯流水完全不是相同的工程,只是把分频后的时钟作为LED灯的控制时钟。这样我们会发现如果我再次用到流水灯的模块的话需要修改很多地方,那么为了让我们的模块复用率更高、更容易复用,我们可以分模块书写,然后在顶层连线即可。如下是我们分模块书写后的程序。

分频模块:

Led灯流水模块:

顶层模块:

我们综合出的电路图为:

通过top_down书写,我们的各模块的复用率就会大大提高,当我们下次使用到led灯流水或者分频模块的时候直接把该模块复制过去连线即可。

请扫二维码加入fpga圈,我们将不断更新FPGA技术支持,都是免费的哦!

此文章为原创出自 V3学院 www.v3edu.org,FPGA培训专家

时间: 2024-10-17 18:03:50

FPGA培训专家 V3学院 FPGA专家 带你学习Verilog语言top_down书写技巧的相关文章

FPGA培训专家 V3学院带你学习 按键消抖 和 边缘检测

FPGA培训专家 V3学院 一般情况下,我们从按下按键到松开基本需要大于几十毫秒的时间,系统时钟的周期处于纳秒级,因此我们按下一次按键会被大于十万个时钟的上升沿采集到,然而我们希望的是按下一次按键只被一次上升沿采集到,不然会被认为按了多次按键,所以我们需要对我们的按键进行处理.假设按键在没被按下时为高电平,被按下时处于低电平,如图1所示的波形图. 图1 按键波形图 由图1 分析可知在key被按下时有且仅有一个key的上升沿和一个key的下降沿,我们可以通过检测key的上升沿或者下降沿来确定按键被

v3学院 FPGA专家 带你玩转DDR3

本文章原创,来自FPGA培训专家,v3学院 www.v3edu.org 本项目基于 Spartan6 xc6slx45t-2fgg484 系列FPGA 第一步:我们先创建ise工程,调取ddr3 ipcore: 打开ISE Core generater,找到MIG核 第二步:设置IPcore 名称 第三步:选择芯片类型,如果建立过IPCORE工程默认设置即可 第四步:根据原理图设置DDR3控制器所在bank 第五步:选择对应DDR3芯片 第六步:控制器相关特性设置(默认设置即可) 第七步:设置给

v3学院 FPGA专家 带你学习FPGA实现格雷码跨时钟域异步fifo

当由慢时钟域到快时钟域,肯定需要一个buffer做缓冲,这样才能完成时钟域的转换.一般这种情况都选择FIFO来做缓冲. 当读写FIFO的时钟不同那么称为异步FIFO,FIFO就是一个"环形存储器"读操作会把读指针指向下一个读数据,写操作会把写指针指向下一个写数据地址.当读指针追上写指针时称作读空,当写地址追上读地址时称作写满. 读空,写满标志的产生 格雷码地址编码产生 异步fifo整体逻辑框图 请扫二维码加入fpga圈 代码实现请持续关注,下次讲解! 本文章原创,来自v3学院 www.

FPGA培训专家 v3学院 教你FPGA-赋值语句

此文章为v3学院原创 www.v3edu.org 开发过程中,我们用的最多的恐怕就是赋值语句了,我们常用的赋值方式有两种:阻塞赋值和非阻塞赋值.我刚开始学的时候就被这两种赋值方式搞晕了,当时脑子里面有几个问题总是一团乱麻-什么是阻塞赋值?什么是非阻塞赋值?什么时候用阻塞赋值?什么时候用非阻塞赋值?这两种赋值方式到底有哪些不同?什么时候两种赋值方式结合起来用? 当时由于好的教材比较少,因此我被这些简单的问题困扰了很久,今天通过本节课程的学习,我们将通过一些实际的例子来说明这些问题. 一非阻塞赋值语

FPGA培训专家 V3学院带你学习 使用modesim仿真工具

首先我们建立LED灯的功能模块和  LED灯仿真模块: 打开modesim,新建工程, 选择工程保存路径, 添加需要仿真的功能文件和仿真文件 进行编译,检查错误 没有错误,添加仿真波形 进行仿真

v3学院带你学习——Verilog基本语法精讲

? ? ? ? ? ? ? ? ? ? ? ?

V3学院带你学习-缩短汉明码Hamming(12,8)的FPGA实现

此文章为原创出自 V3学院 www.v3edu.org,FPGA培训专家汉明码是一种实现简单并且可以检测和纠正错误的编码, 汉明码是在原编码的基础上附加一部分数据比特,使其满足纠错码的条件.它属于线性分组码,由于线性码的编码和译码容易实现,至今仍是应用最广泛的一类码.V3学院FPGA Verilog 汉明码实现,Hamming(12,8)表示数据位长K=8,编码后码字长N=12,校验位长R=12-8=4,最小汉明距离是H=3(观察其生成矩阵,不同行向量间最少不同比特的数量),纠错能力为(H-1)

v3学院教你编译xilinx仿真库

1.安win->所有程序->键找到xilinx design tools –>ise design tools 里找到Simulation Library Compilation Wizard,如果modelsim 是64位就要选择64位文件夹下的,32位选择32位文件夹下的 2.找到modelsim 的安装目录把modelsim.ini 的只读属性去掉 3.Ise 仿真库编译工具,选择modelsim se 4.设置modelsim 仿真工具启动工具路径 5.语言选择 Verilog

V3学院带你学习-缩短汉明码Hamming(12,8)的FPGA实现-第二部分

此文章为原创出自 V3学院 www.v3edu.org,FPGA培训专家 测试激励模块 tb_hamming_12_8.V //功能描述:给被测模块提供时钟激励,并统计解码后数据的正确性 `timescale 1ns/1ns module tb_hamming_12_8; reg sclk; wire [11:0] ham_o; wire ham_ov; wire [11:0] deham_o; wire deham_ov; reg [31:0] err_cnt; reg [23:0] buff