硬件语言 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

相关内容

热门资讯

常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...