EDA原理及VHDL实现

Download Report

Transcript EDA原理及VHDL实现

该电子教案为<<EDA原理及VHDL>>一书的配套教学资源
版权所有,不得用于其它商业用途
EDA原理及VHDL实现
(该课程为校级精品课程)
何宾
2011.09
课程内容
第1章 数字系统EDA设计概论
第2章 可编程逻辑器件设计方法
第3章 VHDL语言基础
第4章 数字逻辑单元设计
第5章 数字系统高级设计技术(*)
第6章 基于HDL设计输入
第7章 基于原理图设计输入
第8章 设计综合和行为仿真
第9章 设计实现和时序仿真
课程内容
第10章 设计下载和调试
第11章 数字时钟设计及实现(*)
第12章 通用异步接收发送器设计及实现(*)
第13章 数字电压表设计及实现(*)
第14章 软核处理器PicoBlaze原理及应用(*)
注:带*的内容可根据课时的安排选讲
课程授课时间安排
该课程计划总学时:56
其中:
理论教授课时:40
实验课时:16(大约安排实验6-7个)
课程教学用书
理论教学参考用书:
1.何宾编著,<<EDA原理及VHDL实现>>,清华大学出版
社。2011.09。
实验教学参考用书:
1. 何宾编著,<<EDA原理及应用实验教程>>,清华大学
出版社。2009.07
2. 何宾编著,<<数字与片上系统设计教程>>,清华大学
出版社
课程网络资源:
http://bucteda.eefocus.com
课程所要解决的问题?
回忆大二所学《数字电路》课程,还留在你们心
中的回忆:
 烦琐的卡诺图的化简(令你们和我一样抓狂)
如果让你手工化简多变量呢?估计你要崩溃
 想想在做电子课程设计中,你们要花大量的时间
和精力把区区几个74LSXX的门电路,用大量的
导线连接在一起。这个过程估计你们谁也头疼。
你们也一定也知道在你们教科书的末尾好象提到
了一个称为硬件描述语言HDL的东西。老师没
讲,忽略了…,为什么啊?(这门课将要揭密)
课程所要解决的问题?
当你们经历了以上的痛苦后,不知道你们想过下
面的问题没有?
 能不能让计算机帮助化简卡诺图?而且是多个
变量?
 能不能用一种芯片实现多个分离小规模数字IC
的功能,并且在芯片内部将这些功能连接?
 设计数字系统能不能象C语言那样,只关心“如
何描述”一个数字系统,而不是“如何具体实
现”数字系统。
课程的重要性
该课程的学习对后续多门课程的学习起着重要的
作用,比如《微机原理》、《单片机》、《数字信
号处理 》、《通信原理》等和“数字”‘0’和‘1’
有关课
程。
该课程是从事电子系统设计相关专业学生必须掌
握的内容。
大学生电子设计竞赛也把该课程内容作为参赛学
生应该掌握的内容之一。
你们慢慢体会吧…
数字系统EDA技术发展概述
电子设计自动化(Electronics Design Automation,
EDA)技术是一门迅速发展的新技术。
EDA设计就是在计算机上通过特定功能的软件开
发工具,协助设计人员以全自动或半自动化方式完成
所要求电子系统的设计。
数字系统EDA技术发展概述
EDA技术所涉及的领域相当广泛,业界一般将
EDA技术分成:
 狭义EDA技术
 广义EDA技术
数字系统EDA技术发展概述
狭义EDA技术,就是指以大规模可编程逻辑器件为
设计载体,以硬件描述语言为系统逻辑描述的主要表达方
式,以计算机、大规模可编程逻辑器件的开发软件及实验
开发系统为设计工具,通过有关的开发软件,自动完成用
软件方式设计的电子系统到硬件系统的:
逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、
逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配
编译、逻辑映射、编程下载等工作
最终形成集成电子系统或专用集成芯片的一门新技
术,或称为IES/ASIC自动设计技术。
数字系统EDA技术发展概述
广义EDA技术,是通过计算机及其电子系统的辅助
分析和设计软件,完成电子系统某一部分的设计过
程。因此,广义EDA技术除了包含狭义的EDA技术
外,还包括:
计算机辅助分析CAA技术(如PSPICE,EWB,MATLAB等),
 印刷电路板计算机辅助设计PCB-CAD技术(如PROTEL,
ORCAD等)
 其它高频和射频设计和分析的工具等

数字系统设计技术发展历史
在过去的60年中,数字逻辑改变了整个世界,
整个世界朝着数字化方向发展。今天我们所熟悉的
计算机在第二次世界大战后才出现在人类世界中。
表1.1给出了在计算机和数字逻辑发展历史上的
重大事件。
从该表可以看出数字逻辑设计技术经过了近400
年的逐步进化的过程。
数字系统设计技术发展历史
年代
事件
公元前3000年
巴比伦王国开发了算盘。这个装置,它使用的线(棍子)上的一列珠子表示数
字,今天仍然在远东地区的一些地方使用,用于执行计算。
1614-1617
John Napier,苏格兰数学家,发明了对数,允许通过加来进行乘法和减进行除
法。他发明了棒子或者数支,这样可以通过一种特殊的方法移动棍子来实现对
大数的乘或者除。
1623
Wilhelm Schickard,德国教授,发明了第一个机械式计算器,称为“计算钟”。
1630
William Oughtred,英国数学家和牧师,发明了计算尺。
1642-1644
Blaise Pascal, 法国数学家,物理学家和宗教哲学家,发明了第一个机械计算器
Pascaline.
1672-1674
Gottfried Wilhelm Von Leibniz,德国数学家,外交官,历史学家,法学家和微
分的发明家,发明了一个称为步进式计算器的机械计算器。计算器有一个独一
的齿轮-莱布尼茨轮,用于机械式的乘法器。尽管没有使用这个计算器,但是该
设计对未来的机械式计算器的发展产生了深远的影响。
1823-1839
Charles Babbage,英国数学家和发明家,开始在他的差分机上工作,该机器
设计用于自动的处理对数计算。由于有大量来自政府的工作和资金,没有完成
差分机。1834年,Babbage开始在一个功能更强的机器上工作,称为分析机,它
被称为第一个通用计算机。在这个时间前的100年,所要求的精确的机械齿轮,
不能在时间上准确的产生,因此没有工作。所以,Babbage被认为是“计算机之
父”。
数字系统设计技术发展历史
1854
George Boole,英国逻辑学家和数学家,出版了<<Investigation of the Law of
Thought>>,给出了逻辑的数学基础。
1890
Herman Hollerith,美国发明家,使用打孔卡片制表用于1890年的普查。1896年,他成
立了打卡机公司,最终于1924年演变成了IBM公司。
1906
Lee De Forest,美国物理学家,发明了三极管(3个电极真空管)。直到1940年前,这
些管子没有用于计算机中。
1936
Alan M. Turing,英国逻辑学家,发表了一篇论文《On Computable Numbers》,说明
任意的计算都可以使用有限状态机实现。Turing 在第二次世界大战后的,英国早期的计
算机研制中扮演了重要的角色。
1937
George Stibitz,贝尔电话实验室的一个物理学家,使用继电器建立了二进制电路,能进
行加、减、乘和除。
1938
Konrad Zuse ,德国工程师,构建了Z1-第一个二进制计算机器。1941年,完成了Z3-通
用的电子机械式计算机器。
1938
Claude Shannon,基于他在MIT的硕士论文,发表了《A Symbolic Analysis of Relay
and Switching Circuits》,在该著作中,他说明了符号逻辑和二进制数学如何应用到继
电器电路中。
1942
John V. Atanasoff , 爱荷华州立大学教授,完成了一个简单的电子计算机器。
1943
IBM-Harvard Mark I-一个大的可运行的电子机械式计算器。
1944-1945
J.Presper Eckert和John W.Mauchly,在宾夕法尼亚大学的电气工程摩尔学院,设计和
建立了EMIAC。它是首个全功能的电子电子计算器。
数字系统设计技术发展历史
1946
John von Neumann,ENIAC项目的顾问,在该工程后,写了一个很有影
响力的报告,之后,在普林斯顿高等研究院开始他自己的计算机项目。
1947
Walter Brattain , John Bardeen和William Schockley在贝尔实验室发明了
晶体管。
1948
在英国,在Manchester Mark I电子计算机上运行第一个存储程序。
1951
发布-第一个商业制造的计算机,Ferranti Mark I和UNIVAC。
1953
IBM发布了一个电子计算机-701。
1958
Kack kilby,德州仪器公司的一名工程师,建立一个可移相的振荡器,作
为第一个集成电路(Integrated Circuit, IC)。
1959
Robert Noyce, 1958年所建立的仙童半导体公司联合创始人,生产了第一
个集成电路平面工艺。这导致实际大规模的生产可靠的集成电路。1968
年,Noyce成立了Intel公司。
1963
数字设备公司DEC生产了首个小型计算机。
1964
IBM生产了System/360系列电脑主机。
数字系统设计技术发展历史
1965
在电子杂志上,Gordon Moore预测一个集成芯片上的元件数量在每一年翻
一倍。这就是著名的“摩尔定律”。在1975年,修改该定律,每两年翻一倍。
1969
IBM的研究人员开发了第一个片上可编程逻辑阵列(Programmable logic
array, PLA)。
1971
Marcian E. Hoff, Jr.,Intel公司的工程师,发明了第一个微处理器。
1975
Intersil生产了第一片现场可编程逻辑阵列(Field Programmable logic array,
FPLA)。
1978
单片存储器引入了可编程阵列逻辑(Programmable Array Logic,PLA)。
1981
IBM个人电脑诞生。
美国国防部开始开发VHDL。VHDL中的V表示VHSIC(Very High Speed
Integrated Circuit,超高速集成电路),HDL代表(Hardware Description
Language, HDL).
1983
Intermetric,IBM和TI授权开发VHDL。
1984
Xilinx成立,并发明了现场可编程门阵列(Field Programmable Gate Array,
FPGA)。Gateway设计自动化公司,引入了硬件描述语言Verilog。
1987
VHDL成为IEEE标准(IEEE 1076)。
1990
Cadence Design System收购Verilog。
1995
Verilog成为IEEE标准。
摩尔定律-“统治半导体世界的法则”
在1965年戈登.摩尔给出了世界上著名的“摩尔定
律”,并且于1975年进行了修正,在过去的35年以
来,被证明是非常正确的。
该定律的内容是:集成电路上可容纳的晶体管数
目,约每隔18个月便会增加一倍,性能也将提升一
倍,当价格不变时;或者说,每一美元所能买到的电
脑性能,将每隔18个月翻两倍以上。这一定律成为半
导体工艺不断发展的指南。
摩尔定律-“统治半导体世界的法则”
图1.1 摩尔定律与集成电路的发展趋势
数字系统设计技术发展历史
今天你们每个人都离不开一样东西-“电脑”,也
就
是“微处理器”,但是以后在坐的各位,你们会发
现
你们也离不开另一样东西-“可编程逻辑器件”,我
这
门课程所介绍的东西。
你们也一定很好奇,别着急,听我后面慢慢介
绍。
现代数字系统设计发展阶段
现在数字系统设计的发展是随着计算机的出
现、集成电路制造水平和电子系统设计方法的发展
而不断发展的,主要经历了:



计算机辅助设计(CAD,Computer Assist Design)
计算机辅助工程设计(CAE,Computer Assist Engineering)
电子设计自动化(EDA,Electronic Design Automation)
这几个阶段的特点和标志是什么?
集成电路芯片的发展历史
集成电路的发展分为了四个主要的阶段:
1)在上世纪六十年代早期出现了第一片集成电路,
其集成的晶体管数量少于100个,该集成电路称为小规
模集成电路(Small-Scale Integrated Circuit, SSI)。
2)在上世纪六十年代后期出现了中规模集成电路
(Medium-Scale Integrated Circuit, MSI),其集成的
晶体管数量达到几百个。
3)在上世纪70年代中期,出现了大规模集成电路
(Large-Scale Integrated Circuit, LSI),其集成的晶
体管数量达到几千个。
集成电路芯片的发展历史
4)在上世纪80年代早期,出现了超大规模集成电路
(Very-large-scale-integrated, VLSI),其集成的晶体管
的数量超过了100,000个。
到上世纪80年代后期,集成的晶体管数量超过了
1,000,000个。
到上世纪90年代,集成的晶体管数量超过了
10,000,000,
而到了2004年,这一数量已经超过了100,000,000个。
现在这一数量突破1,000,000,000个。
可编程逻辑器件的发展历史
1.第1阶段
上世纪70年代,可编程器件只有简单的可编程只读
存储器(PROM)、紫外线可擦除只读存储器
(EPROM)和电可擦只读存储器(EEPROM)3种,
由于结构的限制,它们只能完成简单的数字逻辑功
能。
可编程逻辑器件的发展历史
2.第2阶段
上世纪80年代,出现了结构上稍微复杂的可编程
阵列逻辑(PAL)和通用阵列逻辑(GAL)器件,
正式被称为PLD,能够完成各种逻辑运算功能。
可编程逻辑器件的发展历史
3.第3阶段
上世纪90年代,Xilinx和Altera分别推出了与标准门
阵列类似的FPGA和类似于PAL结构的扩展性CPLD。
4.第4阶段
本世纪初,在该阶段出现了SOPC技术,是PLD和
ASIC技术融合的结果。可编程逻辑器件厂商也提供了
SOPC解决方案。
典型的,Xilinx和Altera也推出了相应SOPC FPGA
产品,制造工艺达到65nm/40nm/28nm工艺水平,系
统门数也超过百万门。
数字系统设计方法概论
传统的数字系统的设计方法是画出逻辑图,这个图
包含SSI的门和MSI的逻辑功能,然后人工通过真值表和
通过卡诺图进行化简,得到最小的表达式,然后在基于
TTL的LSI芯片上实现数字逻辑的功能。
数字系统设计方法概论
然而从图1.1可以看出,到了上世纪80年代后期和90
年代早期,这种设计方法遭遇了阻力。为什么呢?
问题就是如何能画一个原理图,这个原理图包含成千
上万个门。正如在新的设计中可编程逻辑设备取代TTL芯
片那样,需要一种新的设计方法来设计数字电路。
今天,计算机辅助设计工具(Computer-aided Tools,
CAD),也称为EDA工具在当今的数字电路设计中是必须
的。
数字系统设计方法概论
在过去数十年越来越清楚的表明,今天的数字系统
的设计人员是通过写软件来设计数字电路的。这是最
重要的例子,说明了从传统数字系统设计方法向现代
的基于EDA工具的设计方法的转变。
数字系统设计方法概论
今天的数字系统设计工程师使用硬件描述语言
(Hardware Description Language, HDL)来设计数字系
统。
最广泛使用的HDL语言是VHDL和Verilog HDL。这
些语言允许设计人员通过写程序描述逻辑电路的行为来
设计数字系统。
程序能用来仿真电路的操作和在CPLD、FPGA或者专
用集成电路ASIC上综合出一个真正的实现。
SOP和POS表达式
术语“乘积”和“和”来自数学,用来描述与
(AND)
和或(OR)逻辑操作。
“乘积”定义为多个变量之间的AND关系。
“和”定义为任意数量逻辑变量的OR关系。
任何逻辑系统能用两种逻辑等效的方法表示,即积
之和(Sum of Product, SOP)形式和和之积(Product of
Sum, POS)形式。
SOP表达式
对于真值表的每一列,能生成一个乘积项,称为最
小项。
最小项通过对输入变量相关的值“相与”AND得
到。
如果真值表特定的一行的变量值为1,则包含变量的名
字,比如x。如果真值表特定的一行的变量值为0,则
包含变量名字的取反,比如~x
SOP表达式
x
y
最小项
0
0
m0=~x&~y
0
1
m1=~x&y
1 0
m2=x&~y
1
m3=x&y
1
SOP表达式
x
0
0
y
0
1
z
0
1 m1=~x & y
1
1
0
1
1 m2=x & ~y
0
如果关心输出为‘1’的行,
可以发现当m1或者m2为真时,
输出z为真。因此,可以写z,
通过简单的OR上最小项(这些
最小项输出为1)。
输出z可以表示为:
z=m1|m2=(~x&y) | (x&~y)
SOP表达式
POS表达式
现在关注的不是真值表输出为1的行,而是关注的
是真值表输出为0的行。如图1.4所示。
POS表达式
注意在这种情况下z是非NOT最小项 m0和非最小
项m3,从前面的最小项的定义,使用德摩根De
Morgan定理,得到:
NOT m0=~m0=~(~x & ~y)=~~(x|y)=x|y
称NOT m0为最大项M0。
POS表达式
x
y
最小项
最大项
0
0
m0=~x&~y
M0=~m0=x|y
0
1
m1=~x&y
M1=~m1=x|~y
1
0
m2=x&~y
M2=~m2=~x|y
1
1
m3=x&y
M3=~m3=~x|~y
得到z的POS表达式为:
z=M0 & M3=(x | y) & ( ~x | ~y)
POS表达式
传统数字系统设计流程
传统的数字系统设计基于
传统的“人工”方式完成,
当
设计目标给定后,给出设计
目标的真值表描述,然后使
用卡诺图对真值表进行化
简,得到最小的表达式,然
后使用TTL的LSI电路实现最
小的表达式,最后使用调试
工具和仪器,对系统进行调
试。
传统数字系统设计流程
下面将通过一个例子来说明这个
传统的设计过程。
1)设计目标:在一个共阳极的7段
数码管上显示相对应的0-F的值。
2)设计目标的真值表描述:图1.2
首先给出了七段数码管的符号表示,当
其是共阳极时,只有相应的段给低电平
‘0’时,该段亮,否则灭。
传统数字系统设计流程
x3 x2 x1 x0
a b c d e f g
x3 x2 x1 x0
a b c d e f g
0 0 0 0
0 0 0 0 0 0 1
1 0 0 0
0 0 0 0 0 0 0
0 0 0 1
1 0 0 1 1 1 1
1 0 0 1
0 0 0 0 1 0 0
0 0 1 0
0 0 1 0 0 1 0
1 0 1 0
0 0 0 1 0 0 0
0 0 1 1
0 0 0 0 1 1 0
1 0 1 1
1 1 0 0 0 0 0
0 1 0 0
1 0 0 1 1 0 0
1 1 0 0
0 1 1 0 0 0 1
0 1 0 1
0 1 0 0 1 0 0
1 1 0 1
1 0 0 0 0 1 0
0 1 1 0
0 1 0 0 0 0 0
1 1 1 0
0 1 1 0 0 0 0
0 1 1 1
0 0 0 1 1 1 1
1 1 1 1
0 1 1 1 0 0 0
传统数字系统设计流程
3)使用卡诺图对真值表进行化简,图
1.3给出对于7段数码管e段的卡诺图化
简过程。
得到e段的最简单的逻辑表达式:
e=~x3& x0 | ~x3&x2&~x1 | ~x2&~x1&x0。
按照步骤3的过程分别得到a,b,c,d,f,g的最简逻辑表达
式,这些最简表达式使用积之和(Sum of Product,
SOP)和和之积(Product of Sum, POS)表示。
传统数字系统设计流程
4)使用相应的TTL门电路来实现各段的最小表
达式。
5)将这些门电路连接到7段数码管的各段,并
进行调试。
传统数字系统设计流程
从上面的流程可以看出,所有的过程都需要人工完
成,试想对于一个包含上百个逻辑门的多输入变量的结
构,根本无法使用人工化简卡诺图实现。同时后续的电
路调试和设计也需要很高的电路布局和布线的技巧,总
而言之,这样的设计对于复杂数字系统来讲效率太低
了。
我们需要进一步考虑的问题是,如何使用计算机帮
助设计者简化设计过程,自动地化简卡诺图,并且在芯
片内部自动实现布局布线。要实现这些要求,就必须使
用基于可编程逻辑器件的现代数字系统设计流程。
计算机最小化技术
从前面的数字系统设计流程中,可以看出使用卡诺
图很容易在不超过4个逻辑变量的布尔函数中找到最少数
目的乘积项。
然而许多的实际问题是,多于4个逻辑变量,并且卡
诺图并不能帮助进行逻辑表达式的化简。
计算机软件程序能够帮助对多于4个逻辑变量的布尔
函数进行简化。这些计算机方法使用基于表格的技术。
这些方法能自动的用机器进行计算。了解这些方法的工
作原理,将提供额外的智慧来简化布尔函数。
在本节所介绍的方法叫做“奎因-麦克斯基(QuineMcCluskey)”方法。还有其它算法比这个算法的化简
速
度更快,但是不能保证生成最优化的化简。
计算机最小化技术
--表格表示
以乘积和形式出现的乘积项,这个乘积项用于表示
布尔函数,称之为蕴含项。这是由于它暗示,如果任何
乘积项为1时,函数将为1。比如,对于这个函数:
f=x & ~y & z | ~x & ~z | ~x & y
其中:x & ~y & z,~x & ~z和~x & y三个乘积项称为
蕴含项。在这种情况下,第一个乘积项是最小项m5。如
果最小项5用二进制数表示为101,这三个二进制数字分
别对应三个变量xyz(其中1对应的是变量的真值,0(~)对
应的是变量的假值)。这样101是x & ~y & z的另一种描述
方式。
计算机最小化技术
--表格表示
如果在一个乘积项中不包含一些变量时,插入一个
破折号“-”表示该变量,比如对于~x & ~z表示为0-0,
~x
& y表示为01-。
因此称这这些为表格表示或者表格形式的乘积项。
计算机最小化技术
--表格表示
下面例子对图1.4的卡罗图用表格表示。该例子中在4
个圈起来输出为‘1’的每个乘积项使用了表格进行表示。
这样很容易对每个圈起来的集合的卡罗图符号得到表格
的表示。表格中最开始的两位是行标号,后两位是列标
号。如果圈起来的集合覆盖一个特殊位位置的‘0’和‘1’,
该位位置变成‘-’。
计算机最小化技术
--表格表示
通过扩展卡诺图中所圈1的集合来产生乘积项是可
能的。比如,任意扩展它将覆盖图中的0,然后产生
乘积项或者蕴含项,叫做本源蕴含项。这样的本源蕴
含项中不能从乘积项中去除变量,并且暗含着逻辑功
能。下面将研究如何通过计算机找到这些本源蕴含项
的方法。
计算机最小化技术
--本源蕴含项
该图中包含两个本源蕴含项x和y & ~z,其表格
表示为1--和-10。下面将给出找到本源蕴含项的方法。
计算机最小化技术
--本源蕴含项
1. 如表1.3所示下面首先列出函数中所有的最小项。
这些最小项以递增的顺序排列。在第一栏中划了一条线
用来区分最小项里有1个1,两个1和3个1 .
计算机最小化技术
--本源蕴含项
下一步将比较第一栏中的每个最小项,方法是每个最
小项和该栏中其它最小项进行比较,这个最小项和其它最
小项只相差一个数字位。由于以递增的顺序排列最小项,
因此比较相邻区域的最小项(用线分割)。
计算机最小化技术
--本源蕴含项
在这个例子中,所有的找到的本源蕴含项用来产生
最小项函数。但并不总是这种情况。有时存在冗余的本
源蕴含项,这些蕴含项不需要覆盖函数中的所有最小
项。下面将给出一个例子来说明不需要使用所有的本源
蕴含项来生成最小项函数。
计算机最小化技术
--必要的本源蕴含项
考虑图1.6表示的布尔函数。下面通过QuineMcCluskey方法来化简这个函数。
计算机最小化技术
--必要的本源蕴含项
计算机最小化技术
--必要的本源蕴含项
表1.5 找到必要本源蕴含项的步骤
计算机最小化技术
--必要的本源蕴含项
只有那些有一个X的特殊的蕴含项,用于作为最终
函数的一部分。称这些本源蕴含项称为必要的本源蕴含
项。
注意在表1.5中只有两个最小项5和8,只有一个X。
这些X对应于两个本源蕴含项0--1和-0-0,这两个蕴含项
画“√”,表示其作为必要的本源蕴含项 .
注意,覆盖了除14和15外的所有最小项,表中清楚
表明了,本源蕴含项111-将覆盖最小项14和15,因此将
这个本源蕴含项添加到两个本源蕴含项中,得到最终的
简化函数。
计算机最小化技术
--必要的本源蕴含项
该最简函数表示为:
f=~x & ~z | ~w & z | w & x & y
现代数字系统设计流程
如图1.7所示,其设计
流程包括:设计目标、设
计输入、功能仿真、综合
优化、综合后仿真、实现
(FPGA设计)或适配
(CPLD设计)、时序仿
真、设计下载和系统调试
与验证等步骤
HDL硬件描述语言概念
硬件描述语言(Hardware Description Language)是
硬件设计人员和电子设计自动化(EDA)工具之间的界
面,其主要目的是用来编写设计文件,建立电子系统行为
级的仿真模型。
即利用计算机的巨大能力对Verilog HDL或VHDL建模
的复杂数字逻辑进行仿真,然后再自动综合,生成符合要
求且在电路结构上可以实现的数字逻辑网表(Netlist),
根据网表和某种工艺的器件自动生成具体电路,最后生
成该工艺条件下这种具体电路的时延模型。仿真验证无误
后,该模型可用于制造ASIC芯片或写入CPLD和FPGA器
件中。
HDL硬件描述语言概念
在HDL语言出现之前,已有了许多程序设计语言,
如汇编、C、Pascal、Fortran、Prolog等。
它们适合于描述过程和算法,不适合作硬件描述。
这些高级语言和HDL语言的一个最重要的本质区别:
C语言是在CPU上运行的, CPU的运行是靠程序计数
器推动的,当然也是串行执行的。
HDL语言最终是要在芯片内生成数字电路, 数字电路
的工作是靠信号流推动的, 信号流是可以并行存在的, 当然
也是并行执行的.
所以, HDL生成的数字电路工作速度比C代码快几十
倍甚至上百倍.(移位寄存器的C语言实现和HDL实现是最
好的例子)
HDL硬件描述语言概念
传统的用原理图设计电路的方法已逐渐消失,取而代
之,HDL语言正被人们广泛接受,出现这种情况有以下
几点原因:
(1)电路设计将继续保持向大规模和高复杂度发展的
趋势。
(2)电子领域的竞争越来越激烈,刚刚涉入电子市场
的成员要面对巨大的压力:提高逻辑设计的效率,降低设
计成本,更重要的是缩短设计周期。
(3)使用硬件语言描述将使检测各种设计方案变成一
件很容易、很方便的事情,因为对方案的修改只需要修改
HDL程序就行了,这比修改原理图要方便得多。
HDL语言特点
1. HDL语言既包含一些高层程序设计语言的结构形
式,同时也兼顾描述硬件线路连接的具体构件。
2. HDL语言是并发的,即具有在同一时刻执行多任务
的能力。一般来讲编程语言是非并行的,但在实际硬件中
许多操作都是在同一时刻发生的,所以HDL语言具有并发
的特征。
3. HDL语言有时序的概念。一般来讲,编程语言是没
有时序概念的,但在硬件电路中从输入到输出总是有延迟
存在的,HDL语言需要建立时序的概念。
4. 通过使用结构级或行为级描述可以在不同的抽象层
次描述设计,HDL语言采用自顶向下的数字电路设计方
法,主要包括3个领域5个抽象层次.
HDL语言特点
--Verilog和VHDL比较
Verilog HDL和VHDL是目前两种最常用的硬件描述语
言,同时也都是IEEE标准化的HDL语言。总的来说,它
们有一下几点不同:
1. 从推出的过程来看,VHDL偏重于标准化的考虑,
而Verilog HDL则和EDA工具结合得更为紧密。
VHDL是为了实现美国国防部VHSIC计划所推出的各
个电子部件供应商具有统一数据交换格式标准的要求。
Verilog HDL的商业气息更浓,它是在全球最大的
EDA/ESDA供应商Cadence公司的支持下针对EDA工具专
门开发的硬件描述语言。
HDL语言特点
--Verilog和VHDL比较
2. Verilog HDL至今已有20多年的历史了,因此
Verilog HDL拥有广泛的设计群体,成熟的资源远比
VHDL丰富。同时Verilog HDL是从高级设计语言C语言
发展而来的,相比VHDL而言更容易上手,其编码风格
也更为简洁明了,是一种非常容易掌握的硬件描述语
言。
HDL语言特点
--Verilog和VHDL比较
3. 目前版本的Verilog HDL和VHDL在行为级抽象建模
的覆盖范围方面也有所不同。
一般认为Verilog HDL在系统抽象方面比VHDL要强一
些.
Verilog HDL比较适合算法级(Algorithm)、寄存器
传输级(RTL)、逻辑级(Logic)以及门级(Gate)的设
计;
VHDL更适合特大型系统级(System)的设计。
习题
1、了解数字逻辑发展历史上的重大事件。
2、说明现代数字系统设计的发展阶段。
3、说明半导体集成电路和可编程逻辑器件的发展阶
段。
4、说明SOP和POS表达式的定义。
5、说明传统数字系统设计流程-麦克斯基算法进
行最小化化简的步骤。
6、说明现代数字系统设计流程。
7、说明VHDL和Verilog语言的特点。