Verilog语言基础知识

更新时间:2023-05-25 06:43:47 阅读: 评论:0

Verilog HDL语言基础知识
先来看两个Verilog HDL程序。
例    一个8位全加器的 Verilog HDL源代码
module adder8(cout,sum,ina,inb,cin);
output[7:0] sum;
output cout;
input[7:0] ina,inb;
input cin;
@
assign {cout,sum}=ina+inb+cin;        模块的端口定义
模块的端口声明了模块的输人和输出口。其格式如下:
module 模块名(口1,口2,口3,口4,……);
2.模块内容
模块内容包括 I/O说明,信号类型声明和功能定义。
(1) I/O说明的格式如下:
输人口: input端口名1,端口名2,……端口名N;
输出口: output端口名l,端口名2,……端口名N;
I/O说明也可以写在端口声明语句里。其格式如下:
      module module_name(input portl,input port2,…output portl,output port2,…);
(2)信号类型声明:
它是说明逻辑描述中所用信号的数据类型及函数声明。如
revi的名词
reg[7:0] out;      数字
      (1)整数
      在Verilog HDL中,整数型常量(即整常数)有以下4种进制表示形式:
      ◇二进制整数(b或B);
      ◇十进制整数(d或D);
      ◇十六进制整数(h或H);
      ◇八进制整数(o或O)。
)
      完整的数字表达式为:
    <位宽>'<进制> <数字>
      位宽为对应二迸制数的宽度,如:
8'b    nets型变量 wire
chambermaidnets型变量指输出始终根据输入的变化而更新其值的变量,它一般指的是硬件电路中的各种物理连接。Verilog HDL中提供了多种nets型变量,具体见表。
表  常用的nets型变量及说明
jalam
类型
openyoureyes
}
功能说明
孙吉芯wire,tri
连线类型(wire和tri功能完全相同)
wor,trior
具有线或特性的连线(两者功能一致)
wand,triand
具有线与特性的连线(两者功能一致)
音标大全!
tri1,tri0
分别为上拉电阻和下拉电阻
supply1,supply0
分别为电源(逻辑1)和地(逻辑0)
这里着重介绍wire型变量。wire是一种常用的nets型变量,wire型数据常用来表示assign语句赋值的组合逻辑信号。Verilog HDL模块中的输入/输出信号类型缺省时自动定义为wire型。Wire型信号可以用作任何方程式的输入,也可以用作assign语句和实例元件的输出,其取值为0,1,x,z。
    wire型变量格式如下 :
&
    ⑴.定义宽度为1位的变量:
    wire 数据名1,数据名2,……数据名n;
    例如:    wire a,b;        register型变量 reg
    register型变量对应的是具有状态保持作用的电路元件,如触发器、寄存器等。register型变量与nets变量的根本区别在于:register需要被明确地赋值,并在被重新赋值前一直保持原值。在设计中必须将寄存器型变量放在过程块语句(如initial,always)中,通过过程赋值语句赋值。另外,在always过程块内被赋值的每一个信号都必须定义成寄存器型。
Verilog HDL中,有4种寄存器型变量,见表
表常用的register型变量及说明   
类型
外贸会计
功能说明
reg
常用的寄存器型变量   
integer
32位带符号整数型变量   
|
real
64位带符号整数型变量   
time
无符号时间变量   
payphone什么意思Integer、real、time等3种寄存器型变量都是纯数学的抽象描述,不对应任何具体的硬件电路。reg型变量是最常用的一种寄存器型变量,下面介绍reg型变量。
      reg型变量格式如下:
%
      reg 数据名1,数据名2,……数据名n;
四级成绩查询 身份证例如: reg a,b;      数组
    若干个相同宽度的向量构成数组,reg型数组变量即为memory型变量,即可定义存储器型数据。如:
    reg[7:0] mymem[l023:0];
上面的语句定义了一个1024个字节、每个字节宽度为8位的存储器。通常,存储器采用如下方式定义:
parameter wordwidth=8,memsize = l024;
reg[wordwidth-l:0] mymem[memsize-l:0];
上面的语句定义了一个宽度为8位、1024个存储单元的存储器,该存储器的名字是mymem,若对该存储器中的某一单元赋值的话,采用如下方式:
mymem[8]=1;      算术运算符
    +            加
    -            减
    *            乘
    /            除
?
    %            求模
算术运算符都是双目运算符。
2. 逻辑运算符
&&            逻辑与
||            逻辑或
!            逻辑非
3. 位运算符
|
位运算是将两个操作数按对应位进行逻辑运算。位运算符包括
-            按位取反
&            按位与
|            按位或
^            按位异或
^~,~ ^          按位同或
当两个不同长度的数据进行位运算时,会自动地将两个操作数按右端对齐,位数少的操作数会在高位用0补齐。
{
4. 关系运算符
<            小于
< =            小于或等于
>            大于
ezra> =            大于或等于
在进行关系运算时,如果声明的关系是假,则返问值是0;如果声明的关系是真,则返回值是1;如果某个操作数的值不定,则其结果是模糊的,返回值是不定值。
5. 等式运算符
&
= =                等于
!=                不等于
= = =            全等
!= =            不全等
这4种运算符都是双目运算符,得到的结果是1位的逻辑值。如果得到1,说明声明的关系为真;如得到0,说明声明的关系为假。
相等运算符(= =)和全等运算符(= = =)的区别是参与比较的两个操作数必须逐位相等,其相等比较的结果才为l,如果某些位是不定态或高阻值,其相等比较得到的结果就会是不定值。而全等比较(= = =)是对这些不定态或高阻值的位也进行比较,两个操作数必须完全一致,其结果才为1。否则结果是0。
如:设寄存器变量a=5'b110x01,b=5'11x01,则“a= = b”得到的结果为不定值x,而“a= = =b”得
到的结果为l。
'
6. 缩减运算符(单目运算)

本文发布于:2023-05-25 06:43:47,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/121783.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:变量   声明   运算符   信号   定义   语句   赋值   存储器
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图