Verilog基础

逻辑 0:表示低电平,也就是对应我们电路的GND;

逻辑 1:表示高电平,也就是对应我们电路的VCC;

逻辑 X:表示未知,有可能是高电平,也有可能是低电平;

逻辑 Z:表示高阻态,外部没有激励信号是一个悬空状态。

进制表示

二进制b或B,十进制d,十六进制h

        4‘b0101表示4位二进制数字0101,4代表二进制位宽

        4'ha表示四位十六进制数字a(ASIC码97)1010

        16’b1001_1010_1010_1001=16'h9AA9

标识符

区分大小写

普通内部信号建议全部小写

信号命名最好体现信号的含义

数据类型(寄存器数据类型,线网数据类型和参数数据类型)
寄存器数据类型

表示一个抽象的数据存储单元,通过赋值语句可以改变寄存器的值关键字reg,reg类型数据的默认初始值为不定值x

reg[31:0]  delay_cnt;  //表示名为delay_cnt(为标识符)的[31:0]32位寄存器,一般默认位宽为1

定义寄存器数据类型的时候不能给它赋初值,因为reg类型的数据只能在always语句和initial语句中被赋值。

时序逻辑?组合逻辑?;时钟信号,触发器,硬件连线?

线网数据类型

wire key_flag;

参数类型

定义常量 parameter H_SYNC=11’d41;

常用于定义状态机的状态,数据位宽和延迟大小等;在模块调用时,可通过参数传递来改变被调用模块中已定义的参数。

运算符

“/”只能整除,只保留整数部分

“%”取余运算

&&两者都为一,结果才为1

||或

a?b:c条件运算符

~a 每位取反

a&b每位相与

a^b每位进行异或(每位值相同结果为0,值不相同结果为1)

移位运算符

a<<b将a左移b位(左移时,位宽增加,右移时,位宽不变)

4‘b1001<<2=6'b100100;

4'b1001>>1=4'b0100;

拼接运算符

{}  {a,b} 将a,b拼接起来,作为一个新信号

c={a,b[3:0]};表示将a和b的低四位拼接起来

运算符优先级

verilog程序框架

基本设计单元“模块”

模块定义,模块定义以 module 开始,endmodule 结束

每个程序包括端口定义,IO说明,内部信号声明,功能定义

功能定义部分有三种方法:

1:assign语句  描述组合逻辑

2:always语句  描述组合/时序逻辑

3:例化实例元件  and #2 u1(q,a,b);//输出q=a&b,#表示延时,延时二个单位的时间,表示上一个语句执行完之后开始延时

上述逻辑功能是并行的。

在always中,逻辑是顺序执行的。而多个always间是并行的

模块调用

例化模块时要给每个模块起个名称 time_count:u_time_count

结构语句:

initial语句它在模块中只执行一次。常用于测试文件的编写,用来产生仿真测试信号或者用于对存储器变量名赋初值

always语句一直不断地重复运动,但只有和一定时间控制结合在一起才有用

时间控制可以是沿触发,也可以是电平触发。沿触发?电平触发?

敏感列表:关键字or多个事件名或信号名组成的列表

沿触发:时序逻辑行为,有关键字posedge(上升沿)or negedge(下降沿)

电平触发:组合逻辑行为

赋值语句:

信号有两种赋值方式

1、阻塞赋值 如b=a;所谓阻塞就是指在同一个always块中,后面的赋值语句是在前一句赋值语句结束后才开始赋值的。

2、非阻塞赋值  如b<=a;非阻塞赋值只能用于对寄存器类型的变量进行赋值,因此只能用在initial和always块中。

组合逻辑用阻塞赋值=,时序逻辑用非阻塞赋值<=

在同一个always块中不要既用非阻塞赋值又用阻塞赋值

不允许在多个always块中对同一个变量进行赋值!

条件语句:

if语句对表达式的值进行判断,若为0,x,z则按假处理,若为1,按真处理

允许IF语句嵌套

case语句(多分支选择语句)

1、分支表达式的值互不相同

2、所有表达式的位宽必须相等

3、casez比较时,不考虑表达式中的高阻值

4、casex不考虑高阻值z和不定值x   

状态机:在有限个状态之间按一定规律转换的时序电路

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值