大话Verilog-Verilog入门(四)

转至我的公众号:
https://mp.weixin.qq.com/s/-cnZgo97GqxH8Vxme_Gckg
笔者:E林
上一篇我们介绍了Verilog模块先生是由描述端口部分和描述逻辑部分组成的。
这一篇我们就展开聊聊这两个部分。

一、 描述端口部分

一般会描述端口的输入和输出。

在两个地方声明

1为头顶的module 模块名(口1,口2……),这里是看不出该口是输入还是输出的,仅仅知道有这么多个端口吧了,
如果要在这里知道他是输入还是输出口,我们是这样子写的:
module 模块名(input口1……)

2为moudule模块里面定义,这里会比较详细的声明他是输入输出
输入口: input[] 端口1;
输出口: output[] 端口2;
输入/输出口 inout[] 端口3;

嗯,第一个部分就这样子,没什么难点。是不是此时心里和下图一样
这里写图片描述

二、 描述逻辑部分

逻辑描述有时序逻辑和组合逻辑

我们描述逻辑一般有三种模式
1为always块,这个也是你未来看到最多的一种方式(即可描述时序逻辑也可以描述组合逻辑)。
如: always@(posedge clk or posedge clr);
begin
if(clr) q<=0;
else q<=d;
end

always后面总是跟着一个@,叫做事件控制,也可以简单理解为@后面的事件发生了,才会执行之后的语句,和我们的条件差不多。
2为在组合逻辑中我们常常用来描述逻辑的是assign声明语句
如:assign a=b&c;

3为用实例元件
如:and #2 ur(Y,A,B);
这里对上面的一段话进行解释,这里用到了一个ur的与门,输出端为Y,输入端为A,B;#2为输出延迟2个单位时间。


在功能描述中,总是会设计到数据信号的,那么跟C语言一样,Verilog也拥有较多的数据类型:large型、medium型、reg型、wire型、integer型、parameter型、time型、small型、tri型、trio型等

这个时候可能你就会觉得,天呀,又开始要背这些型号了吗。

笔者会跟你说,不会让你背觉得难的事情的,虽然Verilog有很多数据类型,但是用的最多的是reg型、wire型、integer型、parameter型这四个,对于初学者来说,仅仅需要记住这个4个就可以了,剩余了有印象即可,知道他是个数据类型,目前就足够。

(1)parameter型:称为符号常量,来定义一个标志符号代表一个常量
如:parameter msb=7; //定义参数msb为常量7
看是不是很简单。

(2)wire型:wire型常常用来表示用以assign关键字指定的组合逻辑符号。一般将输入输出信号类型默认为wire型号。
如: wire[3:0] a;//定义了一个4位的wire型数据
我们可以这样理解,wire单词是线的意思,在原理图中我们的输入输出和各种功能逻辑模块是以线的方式连接在一起的。

(3)reg型:寄存器的英文单词为register,而寄存器为我们电子设计中用来存储数据的一个地方,那存放的这些数据自然也是有类似的,所以我们就用reg,寄存器单词的前三个字母来当作寄存器数据类型的关键字。
如:reg[3:0] rega;//定义一个4位的名字为rega的reg型数据

(4)integer类型:大多数的矢量类型(reg或者net)都被默认当做无符号数。integer和real是个例外,它们被默认为当做有符号数。除非特别声明为有符号数,还有就是integer的位宽为宿主机的字的位数,但最小为32位,用integer的变量都可以用reg定义。因此这个类型可以和reg型一起理解。

好了,这样子我们的两个描述模块的组成部分就算介绍结束了。

如果你觉得得笔者的文章对你有帮助,赏个鸡腿吃吃

这里写图片描述

欢迎关注我的公众号

这里写图片描述

大话Verilog-Verilog入门(三)
https://mp.weixin.qq.com/s/sVAe29CxV_NJ1N3dIULc-A

大话Verilog-Verilog入门(一)
https://mp.weixin.qq.com/s/x-KlnwaXjKi76iUcOUU6eg

大话Verilog-Verilog入门(一)
https://mp.weixin.qq.com/s/8RDze85pKlU8V75TriNlLQ

電子製造工廠如何產出一片電路板(PCBA)
https://mp.weixin.qq.com/s/p78qE-PPNgbePwu-WZVqfg

猜你喜欢

转载自blog.csdn.net/weixin_42124889/article/details/81152149