VHDL的编码器和译码器的设计 2文档格式.docx
- 文档编号:16216094
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:16
- 大小:131.54KB
VHDL的编码器和译码器的设计 2文档格式.docx
《VHDL的编码器和译码器的设计 2文档格式.docx》由会员分享,可在线阅读,更多相关《VHDL的编码器和译码器的设计 2文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
并且可减少芯片的数量,缩小系统体积,降低能源消耗,提高了系统的性能和可靠性。
能全方位地利用计算机自动设计、仿真和调试。
2.2VHDL语言
(1)VHDL语言的简介
VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为AI/IEEE的标准(IEEESTD1076-1987)。
1993年更进一步修订,变得更加完备,成为AI/IEEE的AI/IEEESTD1076-1993标准。
目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。
VHDL的英文全写是:
VHSIC(VeryHigheedIntegratedCircuit)HardwareDescriptiongLanguage.翻译成中文就是超高速集成电路硬件描述语言。
因此它的应用主要是应用在数字电路[5]的设计中。
(2)VHDL语言的特点
VHDL是一种用普通文本形式设计数字系统的硬件描述语言[6],主要用于描述数字系统的结构、行为、功能和接口,可以在任何文字处理软件环境中编辑。
除了含有许多具有硬件特征的语句外,其形式、描述风格及语法十分类似于计算机高级语言。
VHDL程序将一项工程设计项目(或称设计实体)分成描述外部端口信号的可视部分和描述端口信号之间逻辑关系的内部不可视部分,这种将设计项目分成内、外两个部分的概念是硬件描述语言(HDL)的基本特征。
当一个设计项目定义了外部界面(端口),在其内部设计完成后,其他的设计就可以利用外部端口直接调用这个项目。
VHDL的主要特点如下:
1.作为HDL的第一个国际标准,VHDL具有很强的可移植性。
2.具有丰富的模拟仿真语句和库函数,随时可对设计进行仿真模拟,因而能将设计中的错误消除在电路系统装配之前,在设计早期就能检查设计系统功能的可行性,有很强的预测能力。
3.VHDL有良好的可读性,接近高级语言,容易理解。
4.系统设计与硬件结构无关,方便了工艺的转换,也不会因工艺变化而使描述过时。
5.支持模块化设计,可将大规模设计项目分解成若干个小项目,还可以把已有的设计项目作为一个模块调用。
6.对于用VHDL完成的一个确定设计,可以利用EDA工具进行逻辑综合和优化,并能自动地把VHDL描述转变成门电路级网表文件。
7.设计灵活,修改方便,同时也便于设计结果的交流、保存和重用,产品开发速度快,成本低。
(3)VHDL的设计流程
它主要包括以下几个步骤:
1.文本编辑:
用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。
通常VHDL文件保存为.vhd文件,Verilog文件保存为.v文件。
2.使用编译工具编译源文件。
3.功能仿真:
将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)。
4.逻辑综合:
将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式,逻辑综合软件会生成.edf或.edif的EDA工业标准文件。
5.布局布线:
将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放PLD/FPGA内。
6.时序仿真:
需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。
(也叫后仿真)通常以上过程可以都在PLD/FPGA厂家提供的开发工具。
7.烧写器件。
3设计实现
3.1编码器的工作原理
在八-三优先编码器[7](priorityencoder)电路中,允许同时输入两个以上的编码信号。
不过在设计优先编码器时已经将所有的输入信号按优先顺序排了对,当几个输入信号同时出现时,只对其中优先权最高的一个进行编码。
令八-三优先编码器输入信号为i0,i1,i2,i3,i4,i5,i6和i7,输出信号为a2、a1、a0。
输入信号中i0的优先级别最低,依次类推,i7的优先级别最高。
也就是说若i7输入为1(即为高电平)则无论后续的输入信号怎么样,对应的这种状态一样,如若i7输入为0(即为低电平)则看优先级仅次于i7的i6状态决定,依次类推。
因为i0到i7共8中状态,可以用3位二进制编码来表示。
例如:
i7为1对应输出的二进制编码111。
八-三优先编码器功能表如表3-1所示,其实现电路图如图3.1所示:
表3-1八-三优先编码器的功能表
输入
输出
i0
i1
i2
i3
i4
i5
i6
i7
a2
a1
a0
X
1
图3.1八-三优先编码器
3.2译码器的工作原理
二进制译码器的输入是一组二进制代码,输出是一组与输入代码一一对应的高、低电平信号。
因此,译码器是编码器的反操作。
对于三-八译码器来说,3位二进制共有8种状态,所以对应的输出有8种状态。
对于二进制代码111来说,输出为10000000。
由于三-八译码器只需要输入3根线即可输出8种不同的状态,对信息的译码有很大的好处,所以在硬件电路中占有较重要的地位,实验中也经常用到。
三-八译码器功能表如表3-2所示,实现逻辑电路图如图3.2所示:
表3-2三-八译码器的功能表
A2
A1
A0
Y7
Y6
Y5
Y4
Y3
Y2
Y1
Y0
图3.2三-八译码器
对于二-四译码器来说,2位二进制共有4种状态,分别为:
00、01、10、11。
所以对应的输出有4种状态,分别为:
0001、0010、0100、1000。
对于二进制代码00来说,输出为0001,对于11来说,输出为1000。
二-四译码器是所有译码器中结构最简单,其实现的功能也比较少,但是在硬件电路设计中是一个非常重要的元件,实际应用中经常用到这种译码器。
二-四译码器功能表如表3-3所示,实现的电路图如图3.3所示:
表3-3二-四译码器的功能表
图3.3二-四译码器
3.3程序设计中各部分的设计
程序设计的各个部分由VHDL实现后,利用EDA工具对各部分进行了时序仿真(TimingSimulation),其目的是通过时序可以更清楚的了解程序的工作过程。
(1)八-三优先编码器的设计
整个八-三优先编码器的工作框图如图3.4所示。
图3.4八-三优先编码器的工作框图
八-三优先编码器由VHDL程序来实现,下面是其中一段VHDL关键代码:
process(i)
begin
gs<
='
1'
;
a<
="
100"
ifi(7)='
then
111"
elsifi(6)='
110"
elsifi(5)='
101"
elsifi(4)='
elsifi(3)='
011"
elsifi
(2)='
010"
elsifi
(1)='
001"
elsifi(0)='
000"
else
0'
endif;
endprocess;
(2)三-八译码器的设计
关于三-八译码器的工作框图如图3.5所示。
.
图3.5三-八译码器工作框图
三-八译码器由VHDL程序来实现,下面是其中一段VHDL关键代码:
process(datain)
begin
casedatainis
when"
=>
dataout<
10000000"
01000000"
00100000"
00010000"
00001000"
00000100"
00000010"
00000001"
whenothers=>
11111111"
endcase;
endprocess;
(3)二-四译码器的设计
关于二-四译码器的工作框图如图3.6所示。
图3.6二-四译码器工作原理图
二-四译码器由VHDL程序来实现,下面是其中一段VHDL关键代码:
caseiis
00"
o<
0001"
01"
0010"
10"
0100"
11"
1000"
whenothers=>
XXXX"
4系统仿真及分析
使用VHDL语言编写程序后,接下来要做的就是验证程序的正确性,利用EDA导入源程序后,对源程序进行编译,然后进行模拟仿真,可以得到一个波形文件,可以非常直观知道程序是否正确。
在进行模拟仿真之后,为了能了解软件模拟仿真中各信号之间的具体延时量,可以用EDA提供的时序分析功能来做时序分析。
在EDA中启动时序分析,分析完成后,各信号之间的延时时间以表格形式显示出来,表格中的数据即为两信号之间的延时时间。
4.1八-三优先编码器仿真及分析
八-三优先编码器由VHDL程序实现后,其仿真图如图4.1所示。
图4.1八-三优先编码器功能时序仿真图
对其仿真图进行仿真分析:
gs为编码输出标志,i为输入信号组,它由i7-i0八个输入信号组成。
a为输出信号组,它由a2-a0三个二进制代码输出信号组成。
gs为1时候表示输出。
当i7为1时,即输入为:
1*******时,输出111,当i7为0时,输出由优先级仅次于i7的i6决定,即输入为:
01******时,输出110,紧接着依次类推,分别得出输入为:
001*****时,输出101,输入为:
0001****时,输出100,输入为00001***时,输出为011,输入为000001**时,输出010,输入为0000001*时,输出001,输入为00000001时,输出为000。
八-三优先编码器的引脚分配如表4-1所示。
表4-1八-三优先编码器器下载板芯片引脚对照表
gs
EPF8282
P72
P01
P02
P03
P04
P06
P07
P08
P09
EPF10K10
P73
P05
P10
P11
P55
P56
P57
P53
P54
P58
4.2三-八译码器仿真及分析
三-八译码器由VHDL程序实现后,其仿真图如图4.2所示。
图4.2三-八译码器功能时序仿真图
cs译码输出标志,datain为输入信号组,它由datain[2]-datain[0]三个二进制代码输入信号组成。
dataout为输出信号组,它由dataout[7]-dataout[0]八个输出信号组成。
cs为1时候表示输出。
当输入为:
111时,译码后为指定的状态,即输出10000000,紧接着依次类推,当输入为:
110时,输出输出01000000,当输入为101时,输出00100000,当输入为100时,输出00010000,输入011时,输出为00001000,输入为010时,输出00000100,输入为001时,输出00000010,输入为000时,输出为00000001。
三-八译码器的引脚分配如表4-2所示。
表4-2三-八译码器下载板芯片引脚对照表
cs
datain
[2]
[1]
[0]
Dataout
[7]
[6]
[5]
[4]
[3]
4.3二-四译码器仿真及分析
二-四译码器由VHDL程序实现后,其仿真图如图4.3所示。
图4.2二-四译码器功能时序仿真图
i为输入信号组,它由i[1]-i[0]两个二进制代码输入信号组成。
o为输出信号组,它由o[3]-o[0]四个输出信号组成。
11时,译码后为指定的状态,即输出1000,紧接着依次类推,当输入为:
10时,输出输出0100,当输入为01时,输出0010,当输入为00时,输出0001。
二-四译码器的引脚分配如表4-3所示。
表4-3二-四译码器下载板芯片引脚对照表
o0
o1
o2
o3
P59
结束语
通过两星期的紧张工作,最后完成了我的设计任务——基于VHDL的编码器和译码器的设计。
通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。
本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。
它不仅仅是一个学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。
希望学校以后多安排一些类似的实践环节,让同学们学以致用。
在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事工作会有一定的帮助。
在应用VHDL的过程中让我真正领会到了其在电路设计上的优越性。
用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。
致谢
本设计是在指导老师的精心指导和严格要求下完成的,从课题选择到具体设计和调试,都得到老师的悉心指导,无不凝聚着蔡老师的心血和汗水,他多次为我指点迷津,帮助我开拓设计思路,精心点拨、热忱鼓励。
他渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。
通过这次课程设计我学到不少有用的知识,也积累了一定的电路设计的经验。
尤其是在理论联系实际的方面,都为今后的学习和工作打下了坚实的基础,也提高了我的独立工作能力和编程能力。
由于时间的仓促及自身专业水平的不足,整篇报告肯定存在尚未发现的缺点和错误。
恳请阅读此篇报告的老师、同学,多予指正,不胜感激!
参考文献
[1]赵岩,林白,王志强.实用EDA技术与VHDL教程[M].北京:
人民邮电出版社,2011.
[2]李洋.EDA技术实用教程[M].北京:
机械工业出版社,2009.
[3]李云,侯传教,冯永浩.VHDL电路设计实用教程[M].北京:
[4]潘松..VHDL实用教程[M].成都:
电子科技大学出版社,2000.
[5]包健,冯建文,章复嘉.计算机组成与系统结构[M].北京:
高等教育出版社,2009.
[6]王金明.数字系统设计与VHDL[M].北京:
电子工业出版社,2010.
[7]马建国,孟宪元.FPGA现代数字系统设计[M].北京:
清华大学出版社,2010.
附录:
(1)八-三优先编码器的VHDL程序代码:
--程序名:
priority.vhd
libraryieee;
useieee.std_logic_1164.all;
entitypriorityis
port(i:
inbit_vector(7downto0);
a:
outbit_vector(2downto0);
gs:
outbit);
--编码输出标志
endpriority;
architectureaofpriorityis
begin
process(i)
enda;
(2)三-八译码器的VHDL程序代码:
--fuction:
以拨盘开关作为数据输入端,用发光二极管表示译码后的信息;
--datain(0)-datain
(2)分别为c'
b'
a对应拨盘开关上的1-3号键;
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityyima_138is
Port(datain:
instd_logic_vector(2downto0);
cs:
outstd_logic;
dataout:
outstd_logi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL的编码器和译码器的设计 VHDL 编码器 译码器 设计