米联客-FPGA程序设计Verilog语法入门篇连载-02 Verilog语法_基本设计方法

news2024/11/15 19:54:42

软件版本:无

操作系统:WIN10 64bit

硬件平台:适用所有系列FPGA

板卡获取平台:https://milianke.tmall.com/

登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!

1概述

本节主要讲解Verilog的基本设计方法及设计流程

2基本设计方法

Verilog的设计方法有两种,一种采用自上而下的设计方法,另一种采用自下向上的设计方法。自上而下的设计方法先定义顶层模块功能,进而分析要构成顶层模块的必要子模块,然后对各个子模块进行分解、设计,直到到达无法进一步分解的下层模块。这个方法,可以把一个大的系统,分成多个小系统,从时间、工作量上分配给更多的人员进行设计,从而提高了设计效率,缩短了相应的开发时间。

自下向上的设计方法,与自上向下的设计方法思路相反,先从下层模块进行设计,然后仿真与验证。最后联合各级模块组装成一个大的系统。

通常在系统较复杂,子模块较多,需要多人进行联合设计、仿真验证的大系统都是采用自上向下的设计方法。先由系统架构工程师分析系统架构,按照需求划分功能模块,定义模块接口,最后将功能模块分配到具体工程师进行设计。一般当系统规模较小,需要的设计人员较少,设计时一般采用自下向上的设计方法。

3设计流程

Verilog 的设计流程,通常包括以下几个步骤,如图所示:

下面分小节说明各个流程的具体内容。

3.1 需求整理

设计工程师需要对用户提出的功能要求进行理解分析,规划整个系统的功能模块,整理详细的技术指标,确定初步方案。例如,设计一个以太网通信路由器,需要考虑FPGA的时钟工作频率,考虑大致的FPGA逻辑资源消耗评估,以太网PHY芯片的型号选择,电源芯片的选择,各板级芯片的供电设计,产品的PCB走线设计,综合物料成本考虑等等。

3.2 功能划分

分析了用户的功能需求后,接下来就可以进行逻辑功能的设计,设计整个电路的功能、接口和结构,按照自上向下或自下向上的设计方法,进行各个模块的功能设计,设计各子模块的接口和时序,向各工程师进行合理分配子模块设计任务。

3.3 Verilog设计

可以使用喜欢的文本编辑工具,也可以用专用的 Verilog HDL 编程环境进行设计开发,对所需求的模块进行设计建模。

3.4 仿真验证

对建模文件进行编译,对RTL电路进行功能上的仿真验证(前仿真),排除设计的一般错误并进行修正。前仿真验证并没有考虑到具体信号的延迟信息,时序上的问题不能仿真出来,仅验证逻辑上功能的正确性。

3.5 逻辑综合

综合(synthesize),就是在标准单元库和特定的设计约束的基础上,将设计的高层次描述(Verilog 建模)转换为门级网表的过程。逻辑综合的目的是产生物理电路门级结构,并在逻辑、时序上进行一定程度的优化,寻求逻辑、面积、功耗的平衡,增强电路的可测试性。

3.6 布局布线

由综合出的网表与相应的约束文件,利用FPGA厂家提供的各种基本标准单元库,对门级电路进行布局布线。了这一步就将 Verilog 设计的数字电路转换成由FPGA厂家标准单元库组成的数字电路。

3.7 时序仿真

布局布线后,电路模型中有了时延信息。结合在布局布线中获得的精确延迟参数,用专业仿真软件验证电路的时序功能。单元器件的不同、布局布线方案不同都会给电路的时序造成不同的影响,严重时会出现时序错误。出错后可能就需要重新修改 RTL,然后重复后面的步骤。这样的过程可能反复多次,直至所有错误完全排除。

3.8 位流生成和调试

完成上面所有步骤后,就可以通过FPGA厂家开发工具将工程生成位流文件然后下载到 FPGA/CPLD 芯片中,最后在电路板上进行调试、验证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【屏驱MCU】增加自定义分区指南

说明:本文主要给出基于该款 点屏 MCU。增加自定义分区指南 屏驱MCU系列文章 【屏显MCU】多媒体接口总结(一) 【DVP接口】0v5640的DVP接口设计分析(硬件) 【DVP接口】0v5640的DVP接口设计分析(软件&#xff…

CCF-GESP8级考试—图论算法及综合应用(最小生成树)

🍉1 最小生成树的概念 1.1 连通图 🎈 连通图用于描述图中顶点之间是否存在路径相连。一个无向图中,如果从图中的任意一个顶点出发,都可以通过边的连接到达图中的任意其他顶点,则该图被称为连通图。 连通图的性质&…

为何众多卖家都选择入驻亚马逊VC?有什么优势?——WAYLI威利跨境助力商家

众多卖家选择入驻亚马逊VC(Vendor Central),主要是因为VC平台为卖家提供了一系列显著的优势。VC使卖家与亚马逊建立直接供应关系,提升曝光率和销售机会。作为全球领先电商平台,亚马逊拥有庞大用户群和完善物流体系&…

C#窗体自定义快捷操作键的实现 - 开源研究系列文章

这次想到应用程序的窗体的快捷操作键的使用的问题。 上次发布过一个快捷键的例子(https://www.cnblogs.com/lzhdim/p/18342051),区别在于它是操作系统全局注册的热键,如果其它应用程序注册了对应的热键,那就会失效。此例子是对某个窗体里的按…

AI驱动人才社区革新:智能化探索与实践

一、引言:AI赋能人才新生态 在21世纪的数字化浪潮中,人工智能(AI)技术以其强大的数据处理能力、学习优化算法及创新应用模式,正深刻地改变着各行各业的面貌,人才管理领域亦不例外。传统的人才社区&#xf…

yolo中的iou是什么意思

在YOLO(You Only Look Once)算法中,IoU 是“Intersection over Union”的缩写,中文可以理解为“交并比”。IoU 是一个用于衡量两个边界框(bounding box)重叠程度的指标。具体来说,IoU 是通过计算…

CUDA-MODE 第二课: PMPP 书的第1-3章

我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode 第二课: PMPP 书的第1-3章 这节课非常基础,讲的都是基本概念和初级的注意事项,有CUDA基础的朋友可以不用花时间看。 PMPP …

C#语言基础速成Day06

“心之官则思,思则得之,不思则不得也。” 目录 前言文章有误敬请斧正 不胜感恩!||Day06 一、C#属性访问器、方法参数属性访问器(Property Accessors)方法参数(Method Parameters)综合示例 二、C…

小红书种草推广丨爆品层出不穷,品牌还能怎么「造新」?

当品牌已经被大众熟知,要如何在茫茫消费市场中脱颖而出,再度吸引用户的目光? 当品牌陷入增长困境,要如何再造爆品,打造增长的第二曲线,延长品牌的生命周期? …… 就这个大家关心的这些问题&…

三菱定位控制(一)

下面小编开始开始总结学习定位控制,以Q系列三菱PLC来展开学习,希望对读者或者小白有所帮助!!! 一 三菱PLC定位模块 为什么需要学习定位模块(三菱FXCPU能实现一个伺服电机的控制,多个要买定位模…

结构化输出及其使用方法

在 LLM 应用程序中构建稳健性和确定性 图片来自作者 欢迎来到雲闪世界。OpenAI最近宣布其最新的gpt-4o-2024–08–06模型支持结构化输出。与大型语言模型 (LLM) 相关的结构化输出并不是什么新鲜事——开发人员要么使用各种快速工程技术,要么使用第三方工具。 在本文…

异质性空间自回归模型 (HSAR)及 Stata 具体操作步骤

目录 一、引言 二、文献综述 三、理论原理 四、实证模型 五、稳健性检验 六、程序代码及解释 七、代码运行结果 一、引言 在空间计量经济学中,异质性空间自回归模型(Heterogeneous Spatial Autoregressive Model,HSAR)是一种…

深度优化Nginx负载均衡策略,携手Keepalived打造高可用服务架构新纪元

作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客 目录 前言&#…

什么是数据仓库ODS层?为什么需要ODS层?

在大数据时代,数据仓库的重要性不言而喻。它不仅是企业数据存储与管理的核心,更是数据分析与决策支持的重要基础。而在数据仓库的各个层次中,ODS层(Operational Data Store,操作型数据存储)作为关键一环&am…

NVDLA专题4:具体模块介绍——Convolution DMA

概述 Convolution DMA Module的定义在NV_NVDLA_cmda.v中&#xff0c;其module的定义如下&#xff1a; module NV_NVDLA_cdma (cdma_dat2cvif_rd_req_ready //|< i,cdma_dat2mcif_rd_req_ready //|< i,cdma_wt2cvif_rd_req_ready //|< i,cdma_wt2mcif_rd_r…

【Nacos】docker部署nacos服务

docker部署nacos服务 1.直接执行命令2.如果网络出现问题 1.直接执行命令 docker run -e JVM_XMS256m -e JVM_XMX256m --env MODEstandalone \ --name mynacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 \ docker.io/nacos/nacos-server:v2.1.12.如果网络出现问题 执行如下命…

计算机系统基础知识:计算机组成和基本原理

文章目录 1. 总线1.1 系统总线1.2 外总线 2. 中央处理单元2.1 CPU组成运算器控制器寄存器组内部总线 2.2 多核处理器 3. 存储系统3.1 分类3.2 层次结构3.3 主存储器3.4 高速缓存3.5 外存储器3.6 云存储 4. 输入/输出技术4.1 接口的功能和分类4.2 主机和外设间的连接方式4.3 编址…

定制化三防平板:满足个性化需求

定制化服务的核心在于理解并满足用户的个性化需求。对于三防平板而言&#xff0c;这意味着设备不仅需要具备防水、防尘、防摔的基本特性&#xff0c;更需根据用户的特定工作环境和使用习惯&#xff0c;进行功能和设计上的优化。 例如&#xff0c;对于在极端温度环境下作业的人…

51单片机-LED灯蜂鸣器数码管按键DS18B20温度传感器

LDE灯的相关程序 LED灯闪烁 LED流水灯 方法1 方法二&#xff1a; 因为P1口可以直接控制P1^0~P1^7的8个led灯&#xff0c;利用一个8位的二进制数字来进行控制即可。如果要点亮P1^0 只需要给P1口传递 1111 1110即可。 蜂鸣器的使用 什么是蜂鸣器&#xff1f; 蜂鸣器是一种一…

【C++】类和对象 ——中

1. 赋值运算符重载 1.1 运算符重载 • 当运算符被⽤于类类型的对象时&#xff0c;C语⾔允许我们通过运算符重载的形式指定新的含义。C规定类类型对象使⽤运算符时&#xff0c;必须转换成调⽤对应运算符重载&#xff0c;若没有对应的运算符重载&#xff0c;则会编译报错。 •…