举例:与非门
与非门的verilog 描述如下图所示,源程序文件的后缀为.v。
verilog语言的基本描述单元是模块,也就是module。可以看到每一个功能模块都是以module开始,endmodule结束的。一个.v文件可以同时包含多个这样的模块。但是,我们建议大家一个.v文件只包含一个模块,这样便于程序的管理、调试以及复用。
在模块声明中还包含这个模块的名称,以及端口列表,模块就是通过这些端口与其他功能模块进行通信的。我们可以将模块看作一个具有特定功能的电路或集成芯片,端口就相当于这个电路的引脚。
这个与非门模块包含了abc三个端口,那么这些端口哪些是输入,哪些是输出呢,我们需要对其进行声明。并且还要声明这些端口的类型,最常用的就是wire和reg两种类型,其中wire是默认类型,可以省略。后续我们会详细讲解,这里不多做介绍。接下来就是模块的主体部分“逻辑功能描述”,这里使用的是组合逻辑常用assign连续赋值语句。
举例:d触发器
再来看一个简单的上升沿d触发器的例子,如下图所示。
d触发器是时序电路的基本组成单元。可以看到模块声明和刚才的格式略有不同(两种格式均可),但整个模块仍然是以module开始,endmodule结束的。module后面是模块名,这里模块名后面的括号中将端口声明和端口类型声明放在了一起,这是vivado自动生成的格式。
这里的clk和d_i是输入信号,没有指明类型,则默认为wire型。q_o是一个reg类型的输出端口。接下来就是逻辑功能描述,这里采用了时序逻辑主要使用的always语句。
两种端口声明格式
下面是与非门模块的两种描述格式。
总结
一个verilog hdl模块是以module开始,endmodule结束的。module后面是模块名,是所设计电路的标识符。模块名后面的括号中是模块的端口名,使用逗号隔开,最后一个端口后面没有标点符号。端口及其类型声明:端口还需要定义是输入还是输出,以及端口信号的类型是wire型还是reg型,这些都可以放在端口名后面的括号中一起声明。此外,在模块中所使用的一些内部信号和数据对象也要进行数据类型声明。一般使用assign赋值的信号声明为wire型,在always或initial语句中赋值的信号声明为reg型。还可以使用参数来定义常量,增加程序的可读性。verilog的数据类型有很多,但80%的情况只用到这三种。
模块的主体用于描述模块的逻辑功能。常用的有:① assign连续赋值语句,多用于描述组合电路。② always语句可以描述时序逻辑也可以描述组合逻辑。③ 还可以通过实例化已有的模块的方式来建立新的模块,像搭积木一样快速搭建一个系统。
MP4播放器扬声器
有哪些好用的国产蓝牙耳机?盘点四款性价比国产蓝牙耳机
iPhone 7原型机谍照再曝光 摄像头醒目
骨传导耳机有用吗?说说骨传导耳机的好处
高通又来新高科技,努比亚新旗舰Z17充电技术继续提升15%
看看两个使用Verilog HDL设计的简单电路
努比亚倪飞晒红魔5G游戏手机透明版 背部与小米手机透明版有几分相似之处
美国出口管制下调至10%,阻拦非美国芯片企业向华为供货
蔡浩轩:震荡修复,复不复出你们决定!
Qi标准无线供电模块如何处理噪声抑制语音通讯接收灵敏度
标准电阻的阻值表
基于芯海科技CS32F116Q的汽车智能尾灯应用案例
戴尔XPS13 2in1笔记本高清图集
配电自动化终端的分类
光伏发电用0.1MW单元逆变器-箱变一体化装置设计新方案
采用集成设计电源模块的解决方案
单片开关电源高频变压器的设计要点
关于手动布线以及关键信号的处理
Xilinx为低功耗Intel车载信息娱乐参考设计增加灵活的
负荷开关的特点