硬件语言 Verilog HDL 学习 day01 了解基本知识,基本语法2,运算符,表达式
创始人
2024-05-31 04:17:32
0

1.数字集成电路设计

数字集成电路设计方法的演变:

1. 以元件为基础

2.以单元为基础,

3.以 RTL 综合为基础

4. 以IP为基础。


2.集成电路的发展阶段

1. 第一阶段:以加工制造为主导的 IC  产业发展的初级阶段  (产品: 简单的微处理器

2.第二阶段: 是标准工艺加工线公司与IC 设计公司共同发展的阶段  (产品: MPU,微处理器)

3.第三阶段: IC产业的 四业 开始分离,功能强大的通用型中央处理器 和信号处理器

4.第四阶段: IC 产业开始以 Fundry 为主导,IP的使用广泛。


3.功能模块的可重用性

1. 软核(Soft IP Core)
软核在EDA 设计领域指的是综合之前的寄存器传输级(RTL) 模型;具体在FPGA 设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核只经过功能仿真,需要经过综合以及布局布线才能使用。其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。软核是IP 核应用最广泛的形式。

2. 固核(Firm IP Core)
固核在EDA 设计领域指的是带有平面规划信息的网表;具体在FPGA 设计中可以看做带有布局规划的软核,通常以RTL 代码和对应具体工艺网表的混合形式提供。将RTL 描述结合具体标准单元库进行综合优化设计,形成门级网表,再通过布局布线工具即可使用。和软核相比,固核的设计灵活性稍差,但在可靠性上有较大提高。目前,固核也是IP 核的主流形式之一。

3. 硬核 (Hard IP Core)
硬核在EDA 设计领域指经过验证的设计版图;具体在FPGA 设计中指布局和工艺固定、经过前端和后端验证的设计,设计人员不能对其修改。不能修改的原因有两个:首先是系统设计对各个模块的时序要求很严格,不允许打乱已有的物理版图;其次是保护知识产权的要求,不允许设计人员对其有任何改动。IP 硬核的不许修改特点使其复用有一定的困难,因此只能用于某些特定应用,使用范围较窄。
 



4.Verilog HDL  语言要素

1.空白符  :空格符(\b),制表符(\t),换行符,换页符,

2.注意符 :  //  注释一行,   注释多行 /*   */     (注释最好是英文)

3.标识符:   标识符包含:字母,数字,$, _ (下划线),  开头只能是 字母和下划线

4.转义标识符: \

5.关键字: 系统自带的标识符,有固定的意义。

6.Verilog HDL 四种状态: 0 (低电平), 1(高电平) , x(未知态) , z (高阻态)-》总线

7.负数,  补码形式存在

8. 数值进制 , 二进制 b/B, 八进制 o/O, 十进制 d/D,  十六进制 h/H.

9.整数表示,

10.实数表示: (不能用于设计) 十进制表示,  科学计数法,



5.数据类型

物理数据类型:连线型、寄存器型和存储器型数据类型;信号强度表示数字电路中不同强度的驱动源,用来解决不同驱动强度存在下的赋值冲突:

驱动能力:
                                       

标记符   名称     类型强弱程度
supply 电源级驱动驱动最强
strong   强驱动   驱动 逐渐下降
pull上拉级驱动驱动逐渐下降
large大容性存储逐渐下降
weak弱驱动驱动逐渐下降
medium中性驱动存储逐渐下降
small小容性存储逐渐下降
highz高容性高阻



 


连线型数据类型:

连线型数据类型功能说明
wrie,tri标准连线 (缺省为该类型)
wor,trior多重驱动时,具有线或特性的连线型
wand,trand多重驱动时,具有线与特性的连线型
trireg具有电荷保持特性的连线型数据
tri1上拉电阻
tri0下拉电阻
supply1电源线,用于对电源建模,为高电平1
supply0电源线,用于对地 建模, 为低电平0


寄存器: reg型

reg型是数据储存单元的抽象类型,其对应的硬件电路元件具有状态保持作用,能够存储数据,如触发器、锁存器等。
reg型变量常用于行为级描述,由过程赋值语句对其进行赋值。
reg型变量简单例子,
reg a:   //定义一个一也的名为a的reg变量
reg [3:0] b:  //  定义一个4位的名为b的reg型变量
reg[8:1]c.d.e;   //定义了三个名称分别为c、d、 e的8位的reg型变量

reg型变量一般为无符号数,若将一个负数赋给reg型变量,则自动转换成其二进制补
码形式。例如:
reg signed[3:0]rega;

rega=-2;  // rega的值为1110(14),是2的补码

原码: 0010

反码: 1101

补码: 1110



5.运算符与表达式

1.算数操作符,  加法(+),减法(-),乘法(*),除法(/), 取模(%)

重点:算术操作符的结果是位宽。算术表达式结果的长度是由最长操作数决定的,再赋值语句中,算术操作结果由操作最左端目标长度决定

一,加法

reg[3:0]a,b,c;
Reg[1:0]d,k;
a=4'b1001
d=2'b01b=a+d   //b=4'b1010
k=a+d   //k=2'b10

二,减法

reg[3:0]a,b,c;
Reg[1:0]d,k;
a=4'b1001
d=2'b01b=a-d   //b=4'b1000
k=a-d   //k=2'b00

三,乘法

reg[3:0]a,b,c;
Reg[1:0]d,k;
a=4'b1001
d=2'b01b=a*d   //b=4'b1001
k=a*d   //k=2'b01

四,除法

reg[3:0]a,b,c;
Reg[1:0]d,k;
a=4'b1001
d=2'b01b=a/d   //b=4'b1010
k=a/d   //k=2'b01

五,取模

reg[3:0]a,b,c;
Reg[1:0]d,k;
a=4'b1001
d=2'b11b=a%d   //b=4'b0000
k=a%d   //k=2'b00

2.关系操作运算符 :  大于(>),小于(<),大于等于(>=) ,小于等于  (<=)  

重点:任何和不定状态的运算输出都是不定状态,但我们不会遇到,在数电中对不定状态管理非常严格。我们都知道产生不定状态只有两种情况一种是信号悬空,另一种是2个信号对一个信号驱动。(两个信号输入只有一个非门输出)

简单  (不知道对比的话,转为十进制自己看看 就行了)

重要的是:   不定态的加入

a = 3;d = 4'hx    //不定状态$display(a<=d)     //out x

3.相等关系符

有四种相等的关系符:  == (等于), !=(不等于)   ,  ===(全等), !==  (非全等)

重要:值得注意的是,我们经常会使用全等,因为相比较于等于,全等不会让不确定状态向下传播。还有就是不允许不同位宽信号对比。

一,== 等于关系符的 真值表

== 等于真值表
==001xz
010xx
101xx
xxxxx
zxxxx

二,=== 等于关系符的真值表  (去除了 不定态)

=== 全等于关系符真值表
===01xz
01000
10100
x0010
z0001

module xx_2;
reg[3:0]a,b,c,d;
initialbegina=4'b0xx1;b=4'b0xx1;c=4'b0011;d=2'b11;$display(a==b);   //结果为  x$display(c==d);   //结果为  1$display(a===b);  //结果为  1$display(c===d);  //结果为  0   (=== 算了位数在规则里面)

4.逻辑运算符  &&  (逻辑与) ,  ||  (逻辑或), !(逻辑 非)

  重点:若操作数有不定状态,则逻辑运算的结果也是不定状态

a=4'b1110;    //a=1  (可以这样理解)
b=4'b0000;    //b=0  (可以这样理解)
c=2'b10;      //c=1   (可以这样理解)!a=0;
!b=1;
!c=0;a&&b=0;
a&&c=0;
b&&c=0;a||b=1;
a||c=0;
b||C=1;

5.按位操作符

按位取反“~”,按位与“&”,按位或“|”,按位异或“^”,按位同或“^~”

重点: 比较位置少的  自动补 0  比较

module bit
reg[2:0]a;
reg[3:0]b;
initialbegin// 因为 计算的时候一般是 位数相同的所以  a= 4'b   4位数a=4'b110;  // 运算的时候 在前面自动补一个 0  a=4'b0110b=4'b0001;$display("%b",~a);    //结果为 4'b1001$display("%b",~b);    //结果为 4'b1110$display("%b",a&b);   //结果为 4'b0000$display("%b",a|b);   //结果为 4’b0111$display("%b",a^b);   //结果为 4'b0111end
endmodule

6.移位操作符  << 左移   >>右移

a=4'b0110
$display("%b",a>>2);   //结果为 4'b0001
$display("%b",a<<2);   //结果为 4'b1000

7.条件运算符    (三目运算符)

module mux2(in1,in2,sel,out);
input [3:0]in1,in2;
input sel;
output [3:0]out;
reg [3:0]out;
assign out=(!sel)?in1:in2;
//sel为0时out等于inl,反之out等于in2
endmodule

8.连接和复制运算符

一,连接操作符:{信号1的某几位,......,信号n的某几位}

二,重复操作符{{}}:讲一个表达式放入最里面,外层放入复制因子。

module con11;
reg [2:0]a;
reg [3:0]b;
reg [7:0]c;
reg [4:0]d;
reg [5:0]e;initialbegina=3'b101;b=4'b1110;c={a,b};   //连接操作  a和b全部连接d={a[2:1],b[2:0]};   //连接操作  a的[2-1]位, b的 [2-0]位 连接,a在前面e={2{a}};// 复制操作符  复制两个a$display("%b",c);//结果7'b1011110$display("%b",d);//结果5'b10110$display("%b",e);//结果6'b101101end
endmodule

相关内容

热门资讯

员工大会主持词结束语分享 员工大会主持词结束语分享  一、 整理队形  徐:请各部门赶快入场,按指示牌站整齐。  二、 准备开...
班级毕业晚会主持词 班级2021年毕业晚会主持词  主持人在台上表演的灵魂就表现在主持词中。在当下的中国社会,司仪等是很...
白事主持词 白事主持词  主持词没有固定的格式,他的最大特点就是富有个性。在各种集会、活动不断增多的社会,主持成...
领导证婚人婚礼精彩致辞 领导证婚人婚礼精彩致辞(通用13篇)  在平平淡淡的学习、工作、生活中,大家都不可避免地要接触到致辞...
儿童节主持词 儿童节主持词(精选15篇)  主持人在台上表演的灵魂就表现在主持词中。现今社会在不断向前发展,主持人...
追悼会的主持词 关于追悼会的主持词范文(精选11篇)  根据活动对象的不同,需要设置不同的主持词。时代不断在进步,主...
《香水》经典台词 《香水》经典台词  在学习、工作生活中,越来越多人会去使用台词,台词起着交代人物关系和背景、进行剧情...
公司年会晚会主持词2019   公司年会晚会主持词2019【一】  甲(女):尊敬的曾总、王书记,亲爱的各位同事,  合:大家好...
学校元旦晚会主持稿开场白 学校元旦晚会主持稿开场白  主持词并没有固定的格式或者模板,个性就是主持词的特点。不同内容的活动,不...
乔迁之喜主持词 乔迁之喜主持词(通用13篇)  契合现场环境的主持词能给集会带来双倍的效果。在如今这个时代,我们对主...
小学元旦晚会主持词 有关小学元旦晚会主持词(通用8篇)  主持词已成为各种演出活动和集会中不可或缺的一部分。现今社会在不...
电视剧《神话》:台词非常雷人 电视剧《神话》:台词非常雷人  1:你是北电、中戏还是上戏  2:幸亏我那天在看完仙剑之后还不忘关注...
双簧剧本台词 双簧剧本台词双簧剧本台词如此双簧道具:椅子一把,化装白油彩,浸满水的手绢一条(开场,甲从舞台左边上场...
大会主持词 大会主持词15篇  活动对象的不同,主持词的写作风格也会大不一样。在当今社会生活中,司仪等是很多场合...
庆祝元旦演出的主持词 庆祝元旦演出的主持词范文(通用8篇)  主持词是主持人在节目进行过程中用于串联节目的串联词。时代不断...
新郎致辞 新郎致辞(精选18篇)  在日常学习、工作抑或是生活中,大家总免不了要接触或使用致辞吧,致辞具有针对...
舞蹈串词 舞蹈串词a:尊敬的各位领导 尊敬的各位领导 b:敬爱的老师 敬爱的老师 c:亲爱的同学们 亲爱的同学...
电影《北京爱情故事》经典台词 电影《北京爱情故事》经典台词1、我们的生命中总会出现这样的一个瞬间,某时某地你会遇见某个人。2、结婚...
晨会的主持词怎么写 晨会的主持词怎么写  主持人在台上所表演的主持词,则这样集会的灵魂之所在。下面小编整理的晨会的主持词...
圣诞晚会主持词结束语 圣诞晚会主持词结束语(精选11篇)  主持词要注意活动对象,针对活动对象写相应的主持词。在当下的中国...