EDA实验报告第三次.docx
- 文档编号:10287259
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:14
- 大小:116.61KB
EDA实验报告第三次.docx
《EDA实验报告第三次.docx》由会员分享,可在线阅读,更多相关《EDA实验报告第三次.docx(14页珍藏版)》请在冰豆网上搜索。
EDA实验报告第三次
实验五8位数码扫描显示电路的VHDL设计
实验目的:
学习硬件扫描显示电路的设计。
实验项目分析设计:
图5.1所示是8位数码扫描显示电路。
图5.1中g~a为数码管段信号输入端,每个数码管的七个段(g、f、e、d、c、b、a)都分别连在一起;k1~k8为数码管的位选信号输入端。
8个数码管分别由8个位选信号k1、k2、…k8来选通,被选通的数码管才显示数据,未选通的数码管关闭。
如在某一时刻,k3为高电平,其余选通信号均为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。
因此,如果希望在8个数码管上显示希望的数据,就必须使得8个选通信号k1、k2、…k8分别被单独选通,同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
图5.18位数码扫描显示电路
程序可由三个进程构成,分别为选通扫描进程、扫描计数进程、译码输出进程。
实验内容1:
用VHDL语言设计8位数码扫描显示电路,显示输出数据直接在程序中给出。
要求:
在QuartusⅡ上进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。
引脚锁定后进行编译、下载和硬件测试实验。
所编写的源程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSCAN_LEDIS
PORT(CLK:
INSTD_LOGIC;
SG:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);--段控制信号输出
BT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));--位控制信号输出
END;
ARCHITECTUREoneOFSCAN_LEDIS
SIGNALCNT8:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALA:
INTEGERRANGE0TO15;
BEGIN
P1:
PROCESS(CNT8)
BEGIN
CASECNT8IS
WHEN"000"=>BT<="00000001";A<=1;
WHEN"001"=>BT<="00000010";A<=3;
WHEN"010"=>BT<="00000100";A<=5;
WHEN"011"=>BT<="00001000";A<=7;
WHEN"100"=>BT<="00010000";A<=9;
WHEN"101"=>BT<="00100000";A<=11;
WHEN"110"=>BT<="01000000";A<=13;
WHEN"111"=>BT<="10000000";A<=15;
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESSP1;
P2:
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THENCNT8<=CNT8+1;
ENDIF;
ENDPROCESSP2;
P3:
PROCESS(A)--译码电路
BEGIN
CASEAIS
WHEN0=>SG<="0111111";WHEN1=>SG<="0000110";
WHEN2=>SG<="1011011";WHEN3=>SG<="1001111";
WHEN4=>SG<="1100110";WHEN5=>SG<="1101101";
WHEN6=>SG<="1111101";WHEN7=>SG<="0000111";
WHEN8=>SG<="1111111";WHEN9=>SG<="1101111";
WHEN10=>SG<="1110111";WHEN11=>SG<="1111100";
WHEN12=>SG<="0111001";WHEN13=>SG<="1011110";
WHEN14=>SG<="1111001";WHEN15=>SG<="1110001";
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESSP3;
END;
仿真波形如下所示:
经过硬件测试后,输入与输出满足题目要求和仿真结果。
实验内容2:
修改实验内容1的程序,增加8个4位锁存器作为输出显示数据缓冲器,由外部输入8个待显示的十六进制数。
要求:
在QuartusⅡ上进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。
所编写的源程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYdatasetableIS
PORT(CLK:
INSTD_LOGIC;
SG:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
BT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
datain:
instd_logic_vector(3downto0);
lock:
instd_logic);
END;
ARCHITECTUREoneOFdatasetableIS
SIGNALCNT8:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALc:
INTEGERRANGE0TO15;
signala:
std_logic_vector(3downto0);
signalb1:
std_logic_vector(3downto0);
signalb2:
std_logic_vector(3downto0);
signalb3:
std_logic_vector(3downto0);
signalb4:
std_logic_vector(3downto0);
signalb5:
std_logic_vector(3downto0);
signalb6:
std_logic_vector(3downto0);
signalb7:
std_logic_vector(3downto0);
signalb8:
std_logic_vector(3downto0);
BEGIN
P1:
PROCESS(CNT8)
BEGIN
CASECNT8IS
WHEN"000"=>BT<="00000001";a(3downto0)<=b1(3downto0);
WHEN"001"=>BT<="00000010";a(3downto0)<=b2(3downto0);
WHEN"010"=>BT<="00000100";a(3downto0)<=b3(3downto0);
WHEN"011"=>BT<="00001000";a(3downto0)<=b4(3downto0);
WHEN"100"=>BT<="00010000";a(3downto0)<=b5(3downto0);
WHEN"101"=>BT<="00100000";a(3downto0)<=b6(3downto0);
WHEN"110"=>BT<="01000000";a(3downto0)<=b7(3downto0);
WHEN"111"=>BT<="10000000";a(3downto0)<=b8(3downto0);
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESSP1;
P2:
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THENCNT8<=CNT8+1;
ENDIF;
ENDPROCESSP2;
P3:
PROCESS(c)--译码电路
BEGIN
CASEcIS
WHEN0=>SG<="0111111";WHEN1=>SG<="0000110";
WHEN2=>SG<="1011011";WHEN3=>SG<="1001111";
WHEN4=>SG<="1100110";WHEN5=>SG<="1101101";
WHEN6=>SG<="1111101";WHEN7=>SG<="0000111";
WHEN8=>SG<="1111111";WHEN9=>SG<="1101111";
WHEN10=>SG<="1110111";WHEN11=>SG<="1111100";
WHEN12=>SG<="0111001";WHEN13=>SG<="1011110";
WHEN14=>SG<="1111001";WHEN15=>SG<="1110001";
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESSP3;
P4:
PROCESS(a)
BEGIN
CASEaIS
WHEN"0000"=>c<=0;
WHEN"0001"=>c<=1;
WHEN"0010"=>c<=2;
WHEN"0011"=>c<=3;
WHEN"0100"=>c<=4;
WHEN"0101"=>c<=5;
WHEN"0110"=>c<=6;
WHEN"0111"=>c<=7;
WHEN"1000"=>c<=8;
WHEN"1001"=>c<=9;
WHEN"1010"=>c<=10;
WHEN"1011"=>c<=11;
WHEN"1100"=>c<=12;
WHEN"1101"=>c<=13;
WHEN"1110"=>c<=14;
WHEN"1111"=>c<=15;
ENDCASE;
ENDPROCESSP4;
P5:
PROCESS(cnt8,lock,datain)
BEGIN
CASEcnt8IS
WHEN"000"=>IFlock='1'THENb1(3downto0)<=datain(3downto0);
endIF;
WHEN"001"=>IFlock='1'THENb2(3downto0)<=datain(3downto0);
ENDIF;
WHEN"010"=>IFlock='1'THENb3(3downto0)<=datain(3downto0);
ENDIF;
WHEN"011"=>IFlock='1'THENb4(3downto0)<=datain(3downto0);
ENDIF;
WHEN"100"=>IFlock='1'THENb5(3downto0)<=datain(3downto0);
ENDIF;
WHEN"101"=>IFlock='1'THENb6(3downto0)<=datain(3downto0);
ENDIF;
WHEN"110"=>IFlock='1'THENb7(3downto0)<=datain(3downto0);
ENDIF;
WHEN"111"=>IFlock='1'THENb8(3downto0)<=datain(3downto0);
ENDIF;
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESSP5;
ENDone;
仿真波形如下所示:
经过硬件测试后,输入与输出满足题目要求和仿真结果。
实验六数控分频器的VHDL设计
实验目的:
学习数控分频器的设计、分析和测试方法。
实验项目分析设计:
数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比。
其原理是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。
实验内容1:
用VHDL语言设计一个8位数控分频器。
要求:
在QuartusⅡ上进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。
引脚锁定以及硬件下载测试,选择目标器件EP1C3,建议选实验电路模式No.0,模式图如附录1附图1所示。
用键1、键2作为置数数据D的输入端,CLK接clock0,FOUT接至扬声器Speaker。
(时序仿真时CLK周期设5ns~10ns,D分别设33H,FEH)
所编写的源程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYDVFIS
PORT(CLK:
INSTD_lOGIC;
D:
INSTD_LOGIC_VECTOR(7DOWNTO0);
FOUT:
OUTSTD_LOGIC);
ENDENTITYDVF;
ARCHITECTUREONEOFDVFIS
SIGNALFULL:
STD_LOGIC;
BEGIN
P_REG:
PROCESS(CLK)
VARIABLECNT8:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFCNT8="11111111"THEN
CNT8:
=D;
FULL<='1';
ELSECNT8:
=CNT8+1;
FULL<='0';
ENDIF;
ENDIF;
ENDPROCESSP_REG;
P_DIV:
PROCESS(FULL)
VARIABLECNT2:
STD_LOGIC;
BEGIN
IFFULL'EVENTANDFULL='1'THEN
CNT2:
=NOTCNT2;
IFCNT2='1'THENFOUT<='1';
ELSEFOUT<='0';
ENDIF;
ENDIF;
ENDPROCESSP_DIV;
ENDARCHITECTUREONE;
仿真波形如下所示:
经过硬件测试后,输入与输出满足题目要求和仿真结果。
实验内容2:
将8位数控分频器扩展为16位数控分频器。
要求:
在QuartusⅡ上进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。
所编写的源程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYRXLIS
PORT(CLK:
INSTD_lOGIC;
D:
INSTD_LOGIC_VECTOR(15DOWNTO0);
FOUT:
OUTSTD_LOGIC);
ENDENTITYRXL;
ARCHITECTUREONEOFRXLIS
SIGNALFULL:
STD_LOGIC;
BEGIN
P_REG:
PROCESS(CLK)
VARIABLECNT8:
STD_LOGIC_VECTOR(15DOWNTO0);
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFCNT8="1111111111111111"THEN
CNT8:
=D;
FULL<='1';
ELSECNT8:
=CNT8+1;
FULL<='0';
ENDIF;
ENDIF;
ENDPROCESSP_REG;
P_DIV:
PROCESS(FULL)
VARIABLECNT2:
STD_LOGIC;
BEGIN
IFFULL'EVENTANDFULL='1'THEN
CNT2:
=NOTCNT2;
IFCNT2='1'THENFOUT<='1';
ELSEFOUT<='0';
ENDIF;
ENDIF;
ENDPROCESSP_DIV;
ENDARCHITECTUREONE;
仿真波形如下所示:
经过硬件测试后,输入与输出满足题目要求和仿真结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 实验 报告 第三次