前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FPGA之Verilog开胃菜

FPGA之Verilog开胃菜

作者头像
狂人V
发布2020-06-29 10:32:39
4260
发布2020-06-29 10:32:39
举报
文章被收录于专栏:电子狂人电子狂人
昨天以及讲了FPGA的开发流程,今天就直接开始讲可以用于开发FPGA的一种硬件编程语言中,Verilog;

还是先大概讲一下Verilog的背景,再对其相关进行介绍。

VerilogHDL是硬件描述语言的一种,用于数字电子系统设计。它允许设计者用它来进行各种级别的逻辑设计,可以用它进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件描述语言之一。

基于VerilogHDL的优越性,IEEE于1995年制定了VerilogHDL的IEEE标准,即VerilogHDL1364-1995。其后,又在2001年发布了VerilogHDL1364-2001标准。

它的特点:

能形式化地抽象表示电路的结构和行为;具有电路仿真与验证机制以保证设计的正确性;支持电路描述由高层到低层的综合转换;便于文档管理,易于理解和设计重用;是一种非常容易掌握的硬件描述语言等特点。

Verilog的模型其实可以是实际电路中不同级别的抽象,不过对于刚开始学习来说,这些就显得很迷了,所以就不讲了,还是直接操作起来吧!

今天先来个基本的入门操作,讲个简单的加法器,就是把两个预定的数进行相加,并在仿真中得到结果。

直接上一段简单的代码例子讲述一下。

该例子描述了一个名为adder的四位加法器,可以根据输入的num1和num2得到一个num1+num2+5的数。

仿真的结果如下,使用了三对数分别进行了该模块的调用,然后得到的sum与想要的一致。

从这例子可以发现模块的框架包括I/O 声明、 I/O 说明、内部信号声明和功能定义。

I/0声明:声明模块的输入输出端口,格式:Module 模块名(端口1,端口2,……);

I/O说明:对端口进行说明,如:

输入:input 端口1,端口2,……;

输出:output 端口1,端口2,……;

也有一种表达是将I/O说明直接写在端口声明语句,如:

Module 模块名(

input 端口1,input 端口2,……,

output 端口1,output 端口2,……

);

内部信号声明:模块内用到的,用wire或reg进行声明的变量,该例只举了一个reg进行表述,以后将慢慢对未使用的进行表述,格式如:

Reg [width-1:0]变量名;wire [width-1:0]变量名;

关于这两者的一些区别也在之后进行讲述。

功能定义:逻辑功能定义,有好几种可在模块中产生逻辑的方法,这次只讲该例子中相关的一个,用“assign”声明语句。如:assign a = b + c;这是一个很简单的加操作,就是使用一个assign,在后面再加一个方程式即可。

写不动了,本来还想把数据类型,基本算数运算符也给介绍了的,但是感觉这些知识太零碎,写着太费精力,而且效果不确定好还是不好,所以今天就到这吧,明天教下仿真工具Modelsim的使用,以后我应该就不讲这些基础到极致的知识了,感觉讲多了打字累,看着也累,具体咋个弄,看情况吧,任性下,多上网查看这些基础知识吧,或者找相关书籍打好语言基础。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子狂人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档