赞
踩
如果表达式1值为X,则结果为X。
激活条件由敏感信号条件表决定,当敏感条件满足时,过程块被激活。
敏感条件有两种,一种是边沿敏感,一种是电平敏感。
说明:
assign语句和always语句的主要区别:
always语句块中如果有多条赋值语句必须将其用begin end包括起来, assign语句中没有begin end
begin end 之间的赋值语句有阻塞赋值和非阻塞赋值之分·
赋值目标1=表达式1;
赋值目标2=表达式2 ;
赋值目标1<=表达式1;
赋值目标2<=表达式2 ;
应用:
综合举例: 4位二进制加1计数器
端口映射有两种方法:
命名法格式:
(.底层端口名1(外接信号名1),.底层端口名2(外接信号名2),...)
因为有名字对应,不必按底层模块的端口信号列表顺序
DFF dff1(.CLK(clk),.D(d1),.Q(q1)); 底层
顺序法格式:
(外接信号名1,外接信号名2,..….)
DFF dff2(q1,d,q);
必须严格按照底层模块的端口信号列表顺序书写
门原语调用
Verilog语言提供已经设计好的门,称为门原语(primitive,共12个),这些门可直接调用,不用再对其进行功能描述。
门原语调用格式: 门原语名 实例名 (端口连接)
其中实例名可省略(和模块调用不同),端口连接只能采用顺序法,输出在前,输入在后。
端口连接中第一个是输出,其余是输入,输入个数不限。
常见门
与 | and |
或 | or |
非 | not |
与非 | nand |
同非 | nor |
异或 | xor |
同或 | xnor |
缓冲器 | buf |
端口列表中前面是输出,最后一个是输入,输出个数不限。
模块的特点:
因连续赋值语句和过程赋值语句的激活特点不同,故赋值目标特点也不同,前者不需要保存,后者需要保存,因此规定两种数据类型;
wire(线性) | tri(三态) | tri0(下拉电阻) | supply0(地) |
---|---|---|---|
wand(线与) | triand(三态与) | tri1(上拉电阻) | supply1(电源) |
wor(线或) | wrior(三态或) | trireg(电容性线网) |
reg(寄存器型) | |
integer(整型) | time(时间型) |
real(实型) | realtime(实时间型) |
将一个信号定义成net型还是varible型,由以下两方面决定:
Verilog中数字的表示格式
注意有符号数是按照补码表示的,即第一位是符号位。
比较: 8'b10111011 →(187)10 有区别
1 | 逻辑1,高电平,数字1 |
0 | 逻辑0,低电平,数字0 |
x | 不确定 |
z | 高阻态 |
if语句---举例
在用if语句设计“组合电路”时要注意,如果条件不完整,会综合出寄存器
使条件完整的两种方法:
条件表达式格式 (计算表达式)
计算表达式:
条件表达式的结果只有0和1两种,如果计算表达式的值为0,则条件表达式的值为0,否则为1 。
格式
功能
三种描述方式
vivado中提到另外一种描述方式:RTL级描述方式
举例:用门级描述、数据流描述、行为描述分别设计数据选择器
关键字即Verilog语言中预定义的有特殊含义的英文词语
如果设计阶段占用了20%的研发时间,那么需要花费80%的研发时间用于调试,才能使系统正常工作
Verilog HDL提供了一种灵活有效的产生输入信号波形的方式---写测试程序( test bench), 就是用一段程序产生激励信号,用语言描述信号的变化。
Test bench应当是被测模块的高层模块,它没有IO端口,而且内部有被测模块的实例。
将时钟信号﹑置/复位信号与其它信号分开并分别加以处理
注意各种(各组)输入信号的时序关系
注意所采用的延时表示方式(绝对延时/相对延时)
注意各种输入激励与时钟信号的关系
非中文形式的符号
大小写要区分 clk
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。