EDA实验Word文档下载推荐.docx
- 文档编号:16580264
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:38
- 大小:139.05KB
EDA实验Word文档下载推荐.docx
《EDA实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA实验Word文档下载推荐.docx(38页珍藏版)》请在冰豆网上搜索。
=>
y<
11111110"
001"
11111101"
010"
11111011"
011"
11110111"
100"
11101111"
101"
11011111"
110"
10111111"
111"
01111111"
WHENOTHERS=>
NULL;
ENDCASE;
ENDIF;
ENDPROCESS;
ENDone;
实验四4位同步二进制加法计数器
(1)4位同步二进制加法计数器是表示一个十六进制的加法器,同步是指当时钟信号clk的上升沿到来时,且复位信号clr有效,就把二进制加法计数器的状态清0。
其原理图如下所示
说明:
其中clr是复位信号,clk是时钟信号,上升沿是有效边沿。
co是进位输出信号,cnt[3..0]是4位二进制输出信号。
LIBRARYIEEE;
ENTITYcnt4eIS
PORT(clk,clr:
INSTD_LOGIC;
co:
OUTSTD_LOGIC;
cnt:
BUFFERINTEGERRANGE0TO15);
ENDcnt4e;
ARCHITECTUREoneOFcnt4eIS
PROCESS(clk,clr)
BEGIN
IFclk'
EVENTANDclk='
THEN
IFclr='
THEN
IFcnt=15THEN
cnt<
=0;
co<
='
0'
ELSIFcnt=14THEN
=cnt+1;
ELSE
ENDIF;
ELSEcnt<
co<
=’0’;
ENDIF;
ENDone;
实验五CT74373的设计
CT74373是三态输出的8D锁存器,8D锁存器是一种有规律设计结构,用生成语句可以简化它的逻辑描述,生成元件符号,如下:
说明:
其中d[7...0]是8位数据输入信号。
oen是三态输出控制信号,当oen=1时,输出为高阻态,即q[7..0]=”ZZZZZZZZ”;
oen=’0’时,锁存器位正常输出状态。
g是使能信号,当g=’1’时,锁存器处于工作状态,输出=输入;
当g=‘0’时,锁存器的状态保持不变。
q[7..0]是数据输出信号。
采用两种方法。
方法一:
(直接在一个VHDL程序中实现8D锁存器的设计)
USEwork.my_pkg2.ALL;
ENTITYCT74373IS
PORT(d:
INSTD_LOGIC_VECTOR(7DOWNTO0);
oen:
g:
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDCT74373;
ARCHITECTUREoneOFCT74373IS
SIGNALsig_save:
STD_LOGIC_VECTOR(7DOWNTO0);
Gelacth:
FORnIN0TO7GENERATE
Latchx:
Latch1PORTMAP(d(n),g,sig_save(n));
ENDGENERATE;
q<
=sig_saveWHENoen='
ELSE
"
ZZZZZZZZ"
方法二:
(使用元件例化语句的设计,分三步)
第一步:
锁存器的设计
ENTITYlatch1IS
PORT(d,ena:
INSTD_LOGIC;
q:
OUTSTD_LOGIC);
ENDlatch1;
ARCHITECTUREexample4OFlatch1IS
PROCESS(d,ena)
IFena=’1’THEN
=d;
ENDexample4;
第二步:
将设计的元件声明装入my_pkg程序包中,便于生成语句的元件例化。
包含latch1元件的my_pkg程序包的VHDL源程序my_pkg.vhd如下:
PACKAGEmy_pkgIS
Componentlatch1--元件声明
PORT(d,ena:
ENDComponent;
ENDmy_pkg;
第三步:
在源程序种用生成语句重复8个latch1,具体的8D锁存器设计电路的VHDL源程序CT74373.vhd如下:
USEwork.my_pkg.ALL;
--打开程序包
PORT(d:
INSTD_LOGIC_VECTOR(7DOWNTO0);
--声明8位输入信号
--STD_LOGIC;
INSTD_LOGIC:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
--声明8位输出信号
ARCHITECTUREoneOFCT74373IS--元件例化
SIGNALsig_save:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGINGeLacth:
FORnIN0TO7GENERATE--用FOR——GENERATE语句例化8个1位锁存器
Latchx:
Latch1PORTMAP(d(n),g,sig_save(n));
=sig_saveWHENoen=’0’else
“ZZZZZZZZ”;
实验六循环彩灯控制器(状态机)
(1)循环彩灯按以下次序循环变化:
彩灯亮灭updown=0updown=1
00000000
00000011
00001100
00110000
11000000
11110000
11111100
11111111
参考生成元件符号如下:
其中CLK是时钟信号,UPDOWN为循环彩灯循环变化的控制信号,Q[7..0]是彩灯输出信号。
UPDOWN控制彩灯变化模式参考上图。
(3)VHDL源程序
ENTITYctrcnt4IS
PORT(clk:
updown:
ENDctrcnt4;
ARCHITECTUREoneOFctrcnt4IS
TYPEstateIS(s0,s1,s2,s3,s4,s5,s6,s7);
SIGNALcurrent_state,next_state:
state;
p1:
PROCESS(clk)
current_state<
=next_state;
ENDPROCESSp1;
p2:
PROCESS(current_state)
CASEcurrent_stateIS
WHENs0=>
q<
00000000"
IFupdown='
next_state<
=s1;
=s7;
WHENs1=>
00000011"
=s2;
=s0;
WHENs2=>
00001100"
=s3;
WHENS3=>
00110000"
=s4;
WHENS4=>
11000000"
=s5;
WHENS5=>
11110000"
=s6;
WHENS6=>
11111100"
WHENS7=>
ENDCASE;
ENDPROCESSp2;
实验七 简单交通灯控制器的设计
(1)基本功能
1)交通灯按以下次序循环变化
东西方向绿灯黄灯红灯南北方向绿灯黄灯红灯
a.亮灭灭灭灭亮(5秒)
b.灭闪灭灭灭亮(3秒,每秒闪一次)
c.灭灭亮亮灭灭(5秒)
d.灭灭亮灭闪灭(3秒,每秒闪一次)
2)有复位功能
用一个开关控制交通灯复位。
“1”为正常工作状态,“0”复位,即停在状态a。
(2)扩展功能(选做)
用两个开关设置通行时间(即绿灯亮的时间),用两个开关设计过渡时间(即黄灯闪的时间)。
设置通行时间
开关量:
00011011
时 间:
5秒10秒15秒20秒
设置过渡时间
3秒4秒5秒6秒
ENTITYJTD5IS
PORT(clk,ena:
b,c:
q0,q1,q2,q3,q4,q5:
outSTD_LOGIC);
ENDJTD5;
ARCHITECTUREoneOFJTD5IS
TYPEstateIS(s0,s1,s2,s3);
SIGNALsave:
signalq1_temp,q4_temp:
STD_LOGIC;
PROCESS(ena,clk)
VARIABLEa:
INTEGER;
VARIABLEa0,a1:
VARIABLEbc:
STD_LOGIC_VECTOR(1downto0);
BC:
=(b&
c);
case(bc)is
when"
00"
a0:
=4;
a1:
=2;
01"
=10;
10"
=15;
=5;
11"
=20;
=6;
whenothers=>
null;
endcase;
ifena='
then
q0<
q1_temp<
q2<
q3<
q4_temp<
q5<
save<
a:
elsifclk'
then
casesaveis
whens0=>
q0<
ifa>
a0then
save<
a:
=1;
elsea:
=a+1;
endif;
whens1=>
a1then
whens2=>
whens3=>
endcase;
endif;
ENDPROCESS;
q4<
=clkandq4_temp;
q1<
=clkandq1_temp;
实验八 数码管扫描显示电路
1.原理
用层次化设计方法,设计一个数码管扫描显示控制器(方框部分)。
功能:
(1)输入8位十六进制数,分别显示在8个数码管上,其中,右起第2位和第7位有小数点,第5位不显示。
(2)显示方式为:
动态扫描显示,且送到数码管上的数据编码必须是8段译码输出。
(3)有复位输入端,复位时,不扫描显示,只右起第1个数码管上静态显示第1个数。
2.设计分析
可将所要设计的电路分解成如下图所示的两个模块,再用VHDL语言实现每个模块的设计。
7段译显示码器
状态机
3.引脚锁定
为了方便实验,8个十六进制数可以不从芯片外部输入,而直接在顶层原理图上将输入端接地或接高电平。
如下图所示,则显示的数据为“F0.FF0F.0”。
复位输入端可采用8位数字开关组的其中一个开关。
时钟输入端可选用1个空的IO口(MBIO_XX),用导线接至独立时钟信号接线组“CLOCK(T)”中的某一引脚(自选,观察采用不同的频率,会产生什么样的显示效果)。
数码管片选编码输出,可选用3个空的IO口(MBIO_XX),用导线接至信号接线组DS1-8A(T)的“SS0”“SS1”“SS2”。
8段码(7段码+小数点)输出,可选用8个空的IO口(MBIO_XX),用导线分别接至“数码管段位引线”接线组XPL-AH的“A”~“H”。
4.VHDL源程序
七段译码显示器
ENTITYLED1IS
PORT(onoff:
a:
inbit_VECTOR(3DOWNTO0);
led7s:
outbit_VECTOR(6DOWNTO0));
ENDLED1;
ARCHITECTUREoneOFLED1IS
BEGIN
PROCESS(a)
ifonoff='
led7s<
0000000"
else
casea(3downto0)is
when"
0000"
led7s<
1111110"
0001"
0110000"
0010"
1101101"
0011"
1111001"
when"
0100"
0110011"
0101"
1011011"
0110"
1011111"
0111"
1110000"
1000"
1111111"
1001"
1110111"
1010"
1011"
0011111"
1100"
1001110"
1101"
0111101"
1110"
1001111"
1111"
1000111"
whenothers=>
endif;
ENTITYLEDIS
PORT(clk,reset:
d1,d2,d3,d4,d5,d6,d7,d8:
sel:
outbit_VECTOR(2DOWNTO0);
dout:
outbit_VECTOR(3DOWNTO0);
dp:
outSTD_LOGIC;
onoff:
ENDLED;
ARCHITECTUREoneOFLEDIS
SIGNALsave,nex:
save<
=nex;
PROCESS(save,nex)
casesaveis
sel<
dout<
=d8;
dp<
onoff<
nex<
Sel<
=d7;
=d6;
=d5;
whens4=>
=d4;
whens5=>
=d3;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 实验