简单微处理器的设计Word格式文档下载.docx
《简单微处理器的设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《简单微处理器的设计Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
EDA简介
EDA是ElectronicDesignAutomation(电子设计自动化)的缩写,EDA技术是20世纪90年代初以来迅速发展起来的现代电子工程领域的一门新技术。
它可以编程逻辑器件(PLD)为载体,以计算机为工作平台,以EDA工具软件为开发环境,以硬件描述语言(HDL)作为电子系统功能描述方式,以电子系统设计为应用方向的电子产品自动化设计过程。
简介
VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。
1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
语言的特点
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
应用VHDL进行工程设计的优点是多方面的。
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
的设计流程
它主要包括以下几个步骤:
1.设计规范的定义
这个有点象系统的设计的总体规划,就是要明确这个系统有哪些设计要求,和你要想到达的目标。
2.采用VHDL进行设计描述
这部分包括设计规划和程序的编写。
设计规划主要包括设计方式的选择及是否进行模块划分。
设计方式一般包括直接设计,自顶向下和自底向下设计,这个和其他软件语言差不多。
最重要还是模块划分,这个和设计者的设计水平有很大关系。
完成规划设计后,就可以编写个模块的VHDL程序了,最后将各模块的VHDL程序综合起来就完成了整个设计的VHDL描述.
程序仿真
这个过程和其他软件语言没什么区别。
4.综合、优化和布局布线
综合指的是将设计描述转化成底层电路的表示形式,其结果是一个网表或者是一组逻辑方程;
优化,这个主要是为了提高程序的执行效率及减少资源的利用;
布局布线,指的是将逻辑关系转化成电路连接的方式。
5.后仿真。
这个与VHDL程序仿真不同,这个不仅是对逻辑方面的验证,还要进行时序功能验证。
6.器件编程
3简单微处理器的设计过程
设计规划
计算器通过简单的数字键盘输入操作数,其中所键入的数据将被暂存在移位寄存器中,然后根据运算符执行产生不同的操作结果,所获得的运算结果再通过译码电路转移到七段显示器输出。
整个微处理器的工作原理图如图所示。
图微处理器的工作原理图
各模块设计及相应程序
本系统设计了10条指令:
IN1(输入到目的寄存器),MOV(将一个数送入目的寄存器),MOV1(将源寄存器中的数据存储到目的寄存器所指向的地址单元),MOV2(将源寄存器所指向的地址单元中的数送入目的寄存器),OUT1(输出),CMP(将目的寄存器和源寄存器所指向的地址单元中的数据进行比较),DEC(将目的寄存器中的数据自减一),INC(将目的寄存器中的数据自加一),JMP(无条件跳转),JB(小于跳转),下表列出了每条指令的格式、汇编符号和指令功能。
表指令系统格式表
助记符号
指令格式
功能
IN1Rd
1000
×
Rd
(SW)->
Rd
MOVimRd
1001
im
(im)->
MOV1Rs[Rd]
1010
Rs
(Rs)->
[Rd]
MOV2[Rs]Rd
1011
([Rs])->
OUT1Rd
1100
(Rs)->
LED
CMPRsRd
1101
Rs
(Rs)-(Rd),锁存CY和ZI
DECRd
1110
(Rd)-1->
INCRd
1111
(Rd)+1->
JMPaddr
0110
addr
addr->
PC
JBaddr
0111
若小于,则addr->
关键程序
数的选择模块
LIBRARYIEEE;
USEMUX5IS
PORT(
R0_B,R1_B,R2_B,R3_B,ALU_B:
INSTD_LOGIC;
R0_IN,R1_IN,R2_IN,R3_IN,ALU_IN:
INSTD_LOGIC_VECTOR(7DOWNTO0);
MUX5OUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDMUX5;
ARCHITECTUREAOFMUX5IS
BEGIN
PROCESS(ALU_B,R3_B,R2_B,R1_B,R0_B)
BEGIN
IF(ALU_B='
1'
ANDR3_B='
ANDR2_B='
ANDR1_B='
ANDR0_B='
0'
)THEN
MUX5OUT<
=R0_IN;
ELSIF(ALU_B='
=R1_IN;
=R2_IN;
=R3_IN;
=ALU_IN;
ELSEMUX5OUT<
ENDIF;
ENDPROCESS;
ENDA;
USEFEN2IS
MUX5_IN:
LED_B,WR:
INSTD_LOGIC;
OUT_MUX3,OUT_PUT:
ENDFEN2;
ARCHITECTUREAOFFEN2IS
PROCESS(LED_B)
IF(LED_B='
ANDWR='
)THEN
OUT_PUT<
=MUX5_IN;
OUT_MUX3<
="
00000000"
;
ELSE
USEMUX3IS
SW_B,CS:
FEN2_IN,MUX2_2IN,SW_IN:
MUX3OUT:
ENDMUX3;
ARCHITECTUREAOFMUX3IS
PROCESS(SW_B,CS)
IF(SW_B='
ANDCS='
MUX3OUT<
=SW_IN;
ELSIF(SW_B='
=MUX2_2IN;
=FEN2_IN;
ELSE
4系统仿真
数的输入
以下仿真波形图的测试输入为(34,15,25,92,17,06,83,68,72,87)。
程序开始及输入10个数据.图中的R0控制循环,R1与用自增,R2用于保存输入的数并送到与R1对应地址的RAM中.
图程序开始及输入
数的比较
如图所示,R0存放外循环的比较次数,R1存放内循环的指针。
R2存放每次比较的大数,3存放与R2比较的下一个数。
如果R3>
R2则跳转到交换,否则顺序执行。
图数的比较
交换两个数。
如图,由于R3种的数25大于R2中的数15,则进行交换。
使R2每次存入最大的值后,R3继续读入R1地址的值继续进行比较。
图交换两个数
结果输出
图中的R0控制循环,R1与用自增,R2用于输出寄存器.结果从QD输出。
图中刚好从最小的数06开始输出。
图结果输出
结束语
我在老师的细心指导和同学们的耐心帮助之下成功完成了本次实验,并能得到预期的实验结果。
在这段时间内,我努力学习了计算机系统结构,VHDL等相关的各项知识,也查阅不少资料,并能够将课堂上所学的知识运用于实际的设计中,能够很好的进行理论联系实际进行开发。
通过解决这次设计和设计中遇到的问题,也积累了一定的经验。
对以后从事集成电路设计工作会有一定的帮助。
在应用VHDL的过程中让我真正领会到了其并行运行与其他软件(C语言)顺序执行的差别及其在电路设计上的优越性。
致谢
本课程设计在选题和设计过程中得到了肖晓丽老师的悉心指导,肖老师多次询问课程设计进程,并多次指导我对课程设计进行修改,帮助我完善了该课程设计。
在此对肖老师表示衷心的感谢。
还要感谢寝室的同学们,谢谢你们对我技术和精神上的帮助,谢谢你们。
参考文献
[1]黄仁欣.EDA技术实用教程.北京:
清华大学出版社,2006
[2]黄志鹏,付丽琴.可编程逻辑器件开发技术MAX+piusⅡ.北京:
国防工业出版社,2005
[3]潘松.VHDL实用教程[M].成都:
电子科技大学出版社,2000
[4]谭会生.EDA技术基础.长沙:
湖南大学出版社,2004
[5]杨刚,龙海燕.现代电子技术—VHDL与数字系统设计.北京.电子工业出版社,2004
附录
程序清单:
1ALU子模块
USEALUIS
AC,DR:
INSTD_LOGIC_VECTOR(7DOWNTO0);
S1,S0:
BCDOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
CY,ZI:
OUTSTD_LOGIC
ENDALU;
ARCHITECTUREAOFALUIS
SIGNALAA,BB,TEMP:
STD_LOGIC_VECTOR(8DOWNTO0);
PROCESS(S1,S0)
IF(S1='
ANDS0='
BCDOUT<
=AC+DR;
AA<
='
&
AC;
BB<
DR;
TEMP<
=AA+BB;
CY<
=TEMP(8);
ZI<
='
ELSIF(S1='
=AC-DR;
=AA-BB;
IF(TEMP="
000000000"
TEMP<
=AA+1;
BCDOUT<
=TEMP(7DOWNTO0);
=AA-1;
="
CY<
2状态条件寄存器子模块
USELS74IS
LDFR:
FC,FZ:
OUTSTD_LOGIC
ENDLS74;
ARCHITECTUREAOFLS74IS
PROCESS(LDFR)
IF(LDFR'
EVENTANDLDFR='
FC<
=CY;
FZ<
=ZI;
3时序产生器子模块
USECOUNTERIS
Q,CLR:
T2,T3,T4:
ENDCOUNTER;
ARCHITECTUREAOFCOUNTERIS
SIGNALX:
STD_LOGIC_VECTOR(1DOWNTO0);
PROCESS(Q,CLR)
IF(CLR='
T2<
T3<
T4<
X<
00"
ELSIF(Q'
EVENTANDQ='
=X+1;
=(NOTX
(1))ANDX(0);
=X
(1)AND(NOTX(0));
=X
(1)ANDX(0);
4.程序计数器子模块
USEPCIS
LOAD,LDPC,CLR:
BUS_IN:
PCOUT:
ENDPC;
ARCHITECTUREAOFPCIS
SIGNALQOUT:
STD_LOGIC_VECTOR(7DOWNTO0);
PROCESS(LDPC,CLR,LOAD)
IF(CLR='
QOUT<
ELSIF(LDPC'
EVENTANDLDPC='
IF(LOAD='
=BUS_IN;
--BUS->
=QOUT+1;
--PC+1
PCOUT<
=QOUT;
5ROM子模块
USEROM16IS
ROMOUT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
ADDR:
RE,CS_I:
INSTD_LOGIC
);
ENDROM16;
ARCHITECTUREAOFROM16IS
PROCESS(RE,CS_I)
BEGIN
IF(RE='
ANDCS_I='
CASEADDRIS
WHEN"
00000001"
=>
ROMOUT<
00001010"
00000011"
00001000"
01110000"
--JBL1
00001001"
00000100"
00001011"
00001101"
00010001"
--JBL4
00010010"
00011111"
00010101"
--JBL3
00010110"
00011001"
00010111"
01100000"
--JMPL2WHEN"
00011000"
00001110"
00011101"
--JMPL2
00011110"
:
DECR0
00100001"
00100011"
--JBL2
00100100"
00100110"
00101000"
MOV2[R1]R2
00101101"
--JBL5
00101110"
00101001"
OUT1R2
00110000"
--JMPL6
00110001"
00101111"
WHENOTHERS=>
NULL;
ENDCASE;
子模块
LIBRARYI