Verilog-语法篇1(正点原子笔记)

逻辑值

逻辑0:表示低电平,对应电路中的GND
逻辑1:表示高电平,对应电路中的VCC
逻辑X:表示未知,两个输入端,分别为VCC和GND,所以有可能是高电平,有可能是低电平
逻辑Z:表示高阻态(外部没有输入),是一个悬空状态,所以没有高低电平

进制表示方法

(没特意写出4,则默认位32位数)
二进制:		4‘b0101		表示		4位二进制数			0101
十进制:		4’d2		表示		4位十进制数			2
十六进制:	4‘ha		表示		4位十六进制数			a

(下划线只是为了看着舒服,8421码,方便计算)
example:16’b1001_1010_1010_1001 = 16'h9AA9

标识符

	用于定义模块名、端口名、信号名等
标识符可以是任意一组字母、数字、$符号和_(下划线)符号的组成

要求:	
		1.标识符的第一个字符必须是字母或下划线
		2.标识符区分大小写
		
建议:	
		1.不建议大小写混合使用
		2.信号命名最好体现信号的含义
		
推荐写法:
		1.用英文名
		2.用下划线分隔单词,		如:cpu_addr
		3.用一些常用前缀或后缀,	如:clk_50,clk_cpu

数据类型

主要分为三种:寄存器、线网、参数(前两种是真正在数字电路中起作用的)

寄存器类型

	表示一个抽象的存储单元
	可以使用reg改变寄存器存储的值,reg初始值为x
	
	
			//-----------------------------------------
			//reg define
			//-----------------------------------------
			reg		[31:0]	delay_cnt;	//when defined bits need high to short
			reg				key_reg;	// 1 bits
			
		reg类型的数据只能在always块和initial块中被赋值
			如果该语句描述的是时序逻辑(always中带有时钟信号),则改寄存器变量对应为触发器
			如果该语句描述的是组合逻辑(always中不带有时钟信号),则改寄存器变量对应为硬件连线			
	

线网类型

表示结构实体(例如门)之间的物理连线
不能存储值,其值由驱动元件决定

驱动线网类型类型的元件有门、连续赋值语句、assign等
若无驱动原件连接到线网类型的变量上,则该变量就为高阻的(值为z)

线网数据类型包括wire型和tri型
		//-----------------------------------------
		///wire define
		//-----------------------------------------
		wire				key_flag;

参数类型

参数实际上是常量,用parameter定义
	可以一次定义多个常量,中间用逗号隔开
	每个参数定义的右边必须是一个常数表达式(不能是变量)
		parameter H_SYNC = 11‘d2;
		parameter H_SYNC , L_SUNC = 11‘d2;
1.常用于定义状态机的状态、数据位宽和延迟大小等
2.提高程序的可读性和可维护性
3.模块调用时,可通过参数传递来改变被调用模块中已定义的参数

维护例:wire [2:0] key_flag 等于	parameter f_bits = 2;
							wire [f_bits:0] key_flag

运算符

c语言的部分以下

1.条件运算符:a ? b :c	//若a为真,则选择b,否则选择c
例:
	result = (a>b) ? a : b;

2.位运算符(不同位时,较低位的高位补0~		~a		a的每位取反
&		a&b		a与b按位相与
|		a|b		a与b按位相或
^		a^b		a与b按位异或

3.移位运算符
<<		a<<b	a左移b位
>>		a>>b	a右移b位

4.拼接运算符
{}		{a,b}	[a:b]

none

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值