Verilog 设计进阶
- 格式:ppt
- 大小:818.50 KB
- 文档页数:34
verilog三段式
Verilog的三段式(Three-Level Hierarchy)是一种组织和设计Verilog代码的结构方法,它将代码分成三个级别,以实现模块化和可重用性。
这些级别分别是顶层(Top-level)、中层(Intermediate-level)和底层(Low-level),每个级别都有不同的功能和目的。
1.顶层(Top-level):顶层是整个设计的最高级别,它组织和
连接所有的模块,包括顶层模块和其它外部模块。
在这个层次上,你可以定义主要的模块和其它全局信号,处理模块之间的接口和通信。
通常,顶层模块是设计的入口点,在这里实例化和连接所有的子模块。
2.中层(Intermediate-level):中层是中间级别的模块,它们被
实例化在顶层模块中使用。
这些模块可以是包含顶层模块的主要子模块,也可以是一些复杂的功能模块。
在中层模块中,你可以定义局部信号和局部逻辑,用来实现特定的功能或任务。
这些模块有助于模块化和简化设计,提高代码的可读性和可维护性。
3.底层(Low-level):底层是最低级别的模块,在中层模块中
被实例化和使用。
它们通常是具体的基础模块,实现了基本的功能和操作。
这些模块可以是逻辑门、寄存器、计数器等,也可以是包含简单组合逻辑的小模块。
底层模块通常是最基本的构建块,在设计中提供了底层的功能和细节。
按照这种三段式的组织方式,可以将设计分成几个层次,使代码模块化、结构清晰,并且方便维护和重用。
每个级别都负责不同的任务和功能,遵循了"自顶向下"的设计原则,让整个设计变得更加可靠和可管理。
用verilog 进行FPGA设计第一阶段总结2007-08-23 21:34实习期间,老师叫我们做他的大课题中的一个小部分。
这个部分主要是将A/D采集的数字信号利用一个函数进行插值恢复,以便后面的作图中使用。
要求在每两个点中间均匀插入九个点,每个点与其前后80个点有关,用verilog 语言描述,在xilinx公司的开发环境ISE下完成。
对于verilog我们没有接触过,以前的课程设计都用的是VHDL,ISE也没用过,以前用的是Maxplus2开发环境,于是我们就从网上下载了一些教程开始学习。
在熟悉了verilog的语法和ISE之后,我们开始了设计。
思路是这样的:将要处理的数据先存在一个存储器中,然后每进来一个新的数据,所有的数据向前移动一个寄存器,在主时钟十分频之后的每个上升沿读取新的数据进来,然后计算插值,然后在每个主时钟的上升沿处输出插值后的数据,这样就能实现插值的过程了。
在具体的编写程序的时候,我们先用与每个插值点前后4个点有关进行设计,设计好之后再进行扩展。
对于插值的计算我们先不考虑,将其全部设置成常量,主要考虑看能否在两个点之间插值成功,这样的程序就简单多了。
很快我们的程序就写好了,编译仿真之后能实现插值。
接下来就是主要考虑插值的计算问题了,在这个部分我们走了一些弯路。
首先是乘法问题,这个课题相当于是一个FIR滤波器,其中要进行约720次的相乘累加,我们看资料书和一些发表的论文,上面好多都考虑用分布式算法DA来实现,但是要是考虑的点多了,这种方法就不可行了,因为那个表会造的很大。
在书上,我也没有看到直接用乘号来进行乘法运算的,大部分都是进行移位相加的,为此还认真的研究了一下乘法的原理。
到最后,老师说你可以直接用乘号的,不要管那些移位什么的,这些是综合器做的事情。
其次是verilog中有符号数的计算问题。
因为是新接触,不知道怎么做。
为了实现2*(-3)=-6,搞到了半夜两点。
我记得计算机组织与结构里面有一章是关于乘法的,里面讲的是用布斯算法,看了半天,觉得在程序中这样实现太麻烦,肯定有更简单的方法。