问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

初学者请教Verilog.不同的module可以放在同一个.V文件里吗

发布网友 发布时间:2022-05-02 05:43

我来回答

1个回答

热心网友 时间:2022-06-28 18:09

知识点|Verilog编程的要点

老梁读史
2018-12-20
FPGA的设计就是将自己想要实现的逻辑通过计算机能够理解的语言描述出来,并让计算机根据FPGA内部的资源生成可以进行资源配置并在加电以后能够执行的过程。

人的逻辑和计算机之间的桥梁就是HDL - 硬件描述语言,目前有两个比较流行的语言Verilog和VHDL,其中Verilog用的更多,在我们的小脚丫FPGA平台上也选用了Verilog。

语言就是一个工具,不同的语言只是语法、规则不同而已,稍加了解这些语法、规则应该就可以方便地切换到不同语言上。因此在FPGA设计时,无论是Verilog、VHDL还是其它更高级的语言,这都不是FPGA的实质,我们在使用的时候也没有必要纠结用的是何种语言。

很多做FPGA设计的工程师都买过某著名教授的Verilog的教程,非常厚,但普遍反应看不懂,从头到尾看了好几遍,仍然不会做FPGA设计。

我翻看过基本英文版的FPGA设计的教程,没有一本是专门讲Verilog的语言的,多数是将Verilog的语法和规则作为附录放在书的后面供查阅。

因为Verilog实在太简单,所有的语法和规则汇总起来也就两个页面,对于学习FPGA的初学者来讲了解这些已经足够,更重要的是在实际的项目中通过具体的使用和调试来深刻掌握。

Verilog看起来跟C++比较像,但由于它是一门用于描述硬件的语言,因此它跟MCU上运行的程序不同,它有一些跟硬件高度相关的特性需要格外注意。如果把FPGA的逻辑用MCU程序的思路去写,那就大错特错了。

下面是我们www.stepfpga.com的Wiki系统里对Verilog的简要介绍:

Verilog 是 Verilog HDL 的简称,Verilog HDL 是一种硬件描述语言(HDL:Hardware Description Language),硬件描述语言是电子系统硬件行为描述、结构描述、数据流描述的语言。利用这种语言,数字电路系统的设计可以从顶层到底层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路 ASIC 或现场可编程门阵列 FPGA 自动布局布线工具,把网表转换为要实现的具体电路布线结构。

在 FPGA 的设计中,我们有多种设计方式,如绘制原理图、编写描述语言代码等。早期的工程师对原理图的设计方式情有独钟,这种输入方式能够很直观的看出电路的结构并快速理解电路。随着逻辑规模的不断攀升,逻辑电路也越来越复杂,这种输入方式就会显得力不从心,应付简单的逻辑电路还算实用,应付起复杂的逻辑电路就不行了。因此取而代之的便是编写描述语言代码的方式,现今的绝大多数设计都是采用代码来完成的。

简单地讲在Verilog编程中需要注意以下几点:

所有的Verilog程序都以Mole(模块、组件)的方式存在,一个简单的逻辑可以由一个Mole组成,复杂的逻辑可以包含多个Moles,每个Mole有独立的功能,并由输入、输出端口被其它mole调用。通过Mole的方式可以将一些比较独立、可以复用的功能进行模块化,代码阅读起来也比较直观;

Verilog的信号分为wire和register两种类型,wire可以看成直接的连接,而register具有对某一个时间点状态进行保持的功能,因此在设计逻辑的时候要明确定义每个信号是wire还是reg属性;

并行执行:Verilog描述的主要是硬件而不是软件,因此也就意味着其描述的各个功能之间可以并行执行,比如在你的设计中你有3个计数器,每一个计数器都连接到不同的时钟上,这是没有问题的,每一个时钟都干自己的事。不像MCU,只有一个线程按照顺序执行。

由于篇幅所限,我们就不对这个语言的具体语法、规则进行展开,在此借用Stanford大学的Paul Hartke教授的Verilog课程的PPT页面来对Verilog的语法和规则做个简单的介绍(正好可以借此提升一下自己的专业英语阅读能力),可以看到斯坦福大学的学生学习Verilog也就十几个页面的内容。

使用Verilog设计FPGA的流程

Mole是Verilog最基本构成方式

Verilog的语法规定跟C++比较接近

数值规范

按位/逻辑操作符

混合操作符

一元减数操作符(教授说它从来没有在实际的应用中看到过、用过)

连续赋值

过程赋值

if-else条件过程赋值

逻辑操作符

关系操作符

Case Statement过程赋值

如何得到一个D触发器?

在有限状态机(FSM)中使用Case Statement

来源:电路设计技能 《苏老师讲电路设计》系列

搜索
代码编程自学入门教程
verilog编程基础知识
每天一分钟学一个编程
学编程先学什么比较好
编程入门教程300例
一张图看懂st语言
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
招商银行的美元天添金怎么样? 天添美蒸馒头为什么开裂呢 上海食堂送菜 邮政跨地区取款手续费多? 谁能告诉我邮政储蓄卡跨省取钱要不要收费啊? 自贡市龙盛世纪仿真模型制造有限公司公司简介 学PS真的很难吗 红烧萝卜牛筋 微信怎么转发公众号部分内容 转发公众号部分内容方法 微信公众号内的视频如何下载?一个F12搞定 verilog宏定义对一个.v文件还是整个project有效? 文件扩展名 .v是什么程序语言的扩展名 狼牙山五壮士描写一个可歌可泣的英雄故事全面突出了一个什么字? 在华夏5000年历史中现了无数可歌可沥的英雄儿女你知道哪些英雄人物及其事? 在*战争年代涌现出许许多多可歌可泣的英雄人物请你写几个? 黄继光可歌可泣的故事 革命先烈可歌可泣的故事300字的,速答,谢谢 三国演义里可歌可泣的英雄故事有哪些? 抗美援朝中有哪些可歌可泣的英雄故事,值得青少年学习? 长达八年之久的抗日战争中涌现出哪些可歌可泣的抗日英雄人物和故事? 怒江大桥有什么可歌可泣的英雄故事? 想入一台macbook pro,使用ps的话用什么鼠标 古今爱国志士可歌可泣的英雄事迹 在革命战争年代涌出许许多多可歌可泣的人物,请写出几个? ps/2接口的鼠标什么牌子好? 有哪些可歌可泣的英雄故事~要非常简洁的!!! 中国历史上可歌可泣的英雄人物的故事 ,在股市里,什么叫支撑位和阻力位,支撑位和阻力位是说每一根均线吗 新手炒股如何运用阻力位和支撑位? 有“湖”字的诗句 verilog 中 编译时如何添加一个.v文件 有人知道360游戏中心的代金劵怎么用吗 360超级享玩卡 送的30元。无门槛代金券 哪个应用会赚360代金卷 oracle db 如何用一条sql查询2个时间之间的工作时间间隔 寄快递到台湾需要提供哪些资料,台湾统编是什么 快递到台湾,关于统编号的问题 寄快递到台湾,急求总编号码…… 顺丰快递寄往台湾运单怎么填写,顺丰快递单填写澹 Vivo手机怎样投屏到电视? 实用微信小技巧:微信零钱提现怎么免手续费 办公室电脑,WIN7系统,添加了网络打印机。但显示脱机。怎办?? 一台打印机 几台电脑 连共享的 但是 本地连接打印机的电脑 惠普4670打印机脱机无法打印怎么处理 局域网内的打印机经常脱机,禁用本地连接再启用就好了 win7系统无法添加远程打印机怎么解决 假体隆胸可以母乳吗? 隆胸后可以喂母乳么,有尝试过的宝妈给点建议谢谢! 请问怎样才能把优酷视频刻录成DVD光盘 广东假体隆胸后可以母乳喂养吗?