西安电子科技大学EDA实验报告.docx
- 文档编号:8128957
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:18
- 大小:197.96KB
西安电子科技大学EDA实验报告.docx
《西安电子科技大学EDA实验报告.docx》由会员分享,可在线阅读,更多相关《西安电子科技大学EDA实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
西安电子科技大学EDA实验报告
-CAL-FENGHAI.-(YICAI)-CompanyOne1
西安电子科技大学EDA实验报告
[键入文档标题]
实验一:
QUARTUSⅡ软件使用及组合电路设计仿真
实验目的:
学习QUARTUSⅡ软件的使用,掌握软件工程的建立,VHDL源文件的设计和波形仿真等基本内容;
实验内容:
1.四选一多路选择器的设计
首先利用QuartusⅡ完成4选1多路选择器的文本编辑输入(mux41a.vhd)和仿真测试等步骤,给出仿真波形。
步骤:
(1)建立工作库文件夹和编辑设计文件;
(2)创建工程;
(3)编译前设置;
(4)全程编译;
(5)时序仿真;
(6)应用RTL电路图观测器(可选择)
实验程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYmux41IS
PORT(
S10:
INSTD_LOGIC_VECTOR(1DOWNTO0);
A,B,C,D:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC
);
ENDENTITYmux41;
ARCHITECTUREbhvOFmux41IS
BEGIN
PROCESS(A,B,C,D,S10)
BEGIN
IFS10="00"THEN
Q<=A;
ELSIFS10="01"THEN
Q<=B;
ELSIFS10="10"THEN
Q<=C;
ELSE
Q<=D;
ENDIF;
ENDPROCESS;
ENDbhv;
波形仿真如图:
其中,分别设置A,B,C,D四个输入都为10.0ns的方波,其占空比分别为25%,50%,75%,90%以作为四种输入的区分,使能端s10以此输入00(即[0]),01(即[1]),10(即[2]),11(即[3]),可以观察到输出端Q依次输出分别为A,B,C,D。
试验成功。
其RTL电路图为:
2.七段译码器程序设计仿真
2.1原理:
7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA或CPLD中实现。
本项实验很容易实现这一目的。
例1作为7段BCD码译码器的设计,输出信号LED7S的7位分别接如实验图1数码管的7个段,高位在左,低位在右。
例如当LED7S输出为"0010010"时,数码管的7个段:
g、f、e、d、c、b、a分别接0、0、1、0、0、1、0,实验中的数码管为共阳极的,接有低电平的段发亮,于是数码管显示“5”。
实验图1数码管及其电路
2.2实验内容:
参考后面的七段译码器程序,在QUARTUSII上对以下程序进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。
试验程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYDecL7SIS
PORT(A:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LED7S:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
END;
ARCHITECTUREoneOFDecL7SIS
BEGIN
PROCESS(A)
BEGIN
CASEA(3DOWNTO0)IS
WHEN"0000"=>LED7S<="1000000";--X“80”->0
WHEN"0001"=>LED7S<="1111001";--X“79”->1
WHEN"0010"=>LED7S<="0100100";--X“24”->2
WHEN"0011"=>LED7S<="0110000";--X“30”->3
WHEN"0100"=>LED7S<="0011001";--X“19”->4
WHEN"0101"=>LED7S<="0010010";--X“12”->5
WHEN"0110"=>LED7S<="0000010";--X“02”->6
WHEN"0111"=>LED7S<="1111000";--X“78”->7
WHEN"1000"=>LED7S<="0000000";--X“00”->8
WHEN"1001"=>LED7S<="0010000";--X“10”->9
WHEN"1010"=>LED7S<="0001000";--X“08”->A
WHEN"1011"=>LED7S<="0000011";--X“03”->B
WHEN"1100"=>LED7S<="1000110";--X“46”->C
WHEN"1101"=>LED7S<="0100001";--X“21”->D
WHEN"1110"=>LED7S<="0000110";--X“06”->E
WHEN"1111"=>LED7S<="0001110";--X“0E”->F
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESS;
END;
波形仿真如图:
如图,当输入端A依次输入0-15的四位二进制码时,输出端依次输出(0-9及A-F)的数码管所对应的七位二进制数,例如,当输入0000时,输出端输出1000000(即字符@的ASCII码),显示在数码段上即‘0’。
实验二计数器设计与显示
实验目的:
(1)熟悉利用QUARTUSII中的原理图输入法设计组合电路,掌握层次化设计的方法;
(2)学习计数器设计、多层次设计方法和总线数据输入方式的仿真,并进行电路板下载演示验证。
实验内容:
1.完成计数器设计
设计含有异步清零和计数使能的4位二进制加减可控计数器。
要求:
(1)写出设计框图、流程和方法;
(2)利用VHDL设计实现程序;
(3)进行波形仿真验证;
CLC,CLK,EN
开始
(4)完成设计实验报告:
将实验原理、设计过程、编译仿真波形和分析结果写进实验报告。
CLC=’0’
EN=’1’
CLK’EVENT
CLK=’1’
其设计原理:
由三个输入端CLC,CLK,EN控制计数器的输出和计数方式,其中当清零端CLC=’1’时,输出端输出为全零;当CLC=’0’时,正常计数。
其中如果出现时钟上升沿,加减控制端EN=’1’时,为加法计数,反之则为减法计数。
在程序设计时,在进程中引入信号Q1,在进程中完成标准逻辑位的加减,结束进程之后将其给输出。
设计框图如上所示。
实验程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT4IS
PORT(CLK:
INSTD_LOGIC;
EN:
INSTD_LOGIC;
CLC:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0)
);
ENDENTITYCNT4;
ARCHITECTUREBHVOFCNT4IS
SIGNALQ1:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IFCLC='1'THEN
Q1<=(OTHERS=>'0');
ELSIF(CLK'EVENTANDCLK='1')THEN
IFEN='1'THEN
Q1<=Q1+1;
ELSE
Q1<=Q1-1;
ENDIF;
ENDIF;
ENDPROCESS;
Q<=Q1;
ENDARCHITECTUREBHV;
波形仿真结果如图:
如上图所示,当CLC=’1’时,清零;否则,正常计数。
EN=’0’时,减法计数,EN=’1’时,加法计数。
仿真验证实验设计成功。
2.计数器显示译码设计与下载
用原理图输入法的方式,以前面设计的七段译码器DecL7S和计数器为底层元件,完成“计数器显示译码”的顶层文件设计。
设计原理:
为了使数码管的变化能够用肉眼观察,将输入时钟(50MHz)先进行进行50M分频,输出频率为1Hz的时钟。
其中分频器采用M=50M计数器的进位输出端来实现,将分频后的时钟信号送入四位二进制加减可控计数器的时钟输入端。
四位二进制加减可控计数器由实验1中提供,其输出作为七段译码器的输入端。
50M分频器程序设计:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT5MIS
PORT(CLK:
INSTD_LOGIC;
CLK_OUT:
OUTSTD_LOGIC
);
ENDENTITYCNT5M;
ARCHITECTUREBHVOFCNT5MIS
SIGNALCOUNT:
STD_LOGIC_VECTOR(26DOWNTO0);
BEGIN
PROCESS
BEGIN
WAITUNTILCLK'EVENTANDCLK='1';
IF(COUNT<49999999)THEN
COUNT<=COUNT+1;
CLK_OUT<='0';
ELSE
COUNT<=(OTHERS=>'0');
CLK_OUT<='1';
ENDIF;
ENDPROCESS;
ENDARCHITECTUREBHV;
修改后加减计数器程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT4IS
PORT(CLK:
INSTD_LOGIC;
UPDOWN:
INSTD_LOGIC;
RESET,ENABLE:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0)
);
ENDENTITYCNT4;
ARCHITECTUREBHVOFCNT4IS
SIGNALQ1:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IFENABLE='1'THEN
IFRESET='1'THEN
Q1<=(OTHERS=>'0');
ELSIF(CLK'EVENTANDCLK='1')THEN
IFUPDOWN='1'THEN
Q1<=Q1+1;
ELSE
Q1<=Q1-1;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
Q<=Q1;
ENDARCHITECTUREBHV;
其原理图如下:
其中为了便于观察,我们只仿真未加分频器时的的波形图如下:
其中,ENABLE为使能端,其为1时,电路正常工作。
RESET为复位端,当其为1时,输出为全零。
UPDOWAN为加减控制端,其为0时,减法计数,为1时,加法计数。
硬件测试:
将编译好的的程序下载到实验板上,其引脚对应如原理图所示。
引脚及开关对应关系如下:
控制引脚
enable
reset
updown
对应的开关
SW0
SW1
SW2
上电后,SW0为低电平,数码管输出为‘0‘,SW0为高电平时,正常计数。
将SW1置为高电平时,清零,数码管显示‘0’;只为低电平时,数码管正常显示。
SW2为低电平时,减法计数,为高电平时,加法计数。
实验三:
大作业设计——循环彩灯控制器
实验任务:
设计一个循环彩灯控制器,该控制器可控制10个发光二极管循环点亮、间隔点亮或者闪烁等花型。
要求至少设计三种以上花型,并用按键控制花型之间的转换。
实验设计:
本实验通过设计一个拥有11个状态的状态机,其11个暂态s0-s10循环链接,将其所代替的二进制码送入led灯,以实现彩灯“流水”的特性。
对于每个暂态,都拥有4种二进制码,通过对输入的使能端EN12的判断,决定输出的码值,进而确定显示的彩灯的类型。
同时用数码管作为彩灯花型序号的显示装置,当EN12为00时,显示‘1’;01时显示‘2’;10时显示‘3’,11时显示‘4’。
为了能搞看清彩灯的变化规律,须先经过50M分频器分频。
程序设计如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYLIUSHUIIS
PORT(
CLK:
INSTD_LOGIC;
EN1:
INSTD_LOGIC;
EN2:
INSTD_LOGIC;
CON:
INSTD_LOGIC;
Z:
OUTSTD_LOGIC_VECTOR(9DOWNTO0);
LED7S:
OUTSTD_LOGIC_VECTOR(6DOWNTO0)
);
ENDENTITYLIUSHUI;
ARCHITECTUREBHVOFLIUSHUIIS
TYPESTATE_TYPEIS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9);
SIGNALCURRENT_STATE,NEXT_STATE:
STATE_TYPE;
SIGNALEN12:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
EN12<=EN1&EN2;
TONGBU:
PROCESS
BEGIN
WAITUNTILCLK'EVENTANDCLK='1';
CURRENT_STATE<=NEXT_STATE;
ENDPROCESS;
ZHUANYI:
PROCESS(CURRENT_STATE)
BEGIN
NEXT_STATE<=CURRENT_STATE;
CASECURRENT_STATEIS
WHENS0=>NEXT_STATE<=S1;
WHENS1=>NEXT_STATE<=S2;
WHENS2=>NEXT_STATE<=S3;
WHENS3=>NEXT_STATE<=S4;
WHENS4=>NEXT_STATE<=S5;
WHENS5=>NEXT_STATE<=S6;
WHENS6=>NEXT_STATE<=S7;
WHENS7=>NEXT_STATE<=S8;
WHENS8=>NEXT_STATE<=S9;
WHENS9=>NEXT_STATE<=S0;
ENDCASE;
ENDPROCESS;
SHUCHU:
PROCESS(CURRENT_STATE,EN12)
BEGIN
IFCON='1'THEN
Z<=(OTHERS=>'0');
CASEEN12(1DOWNTO0)IS
WHEN"00"=>LED7S<="1111001";
WHEN"01"=>LED7S<="0100100";
WHEN"10"=>LED7S<="0110000";
WHEN"11"=>LED7S<="0011001";
ENDCASE;
CASECURRENT_STATEIS
WHENS0=>
Z<="0000000000";
WHENS1=>
IFEN12="00"THEN
Z<="0000000001";
ELSIFEN12="01"THEN
Z<="1000000001";
ELSIFEN12="10"THEN
Z<="0000000001";
ELSE
Z<="1111111111";
ENDIF;
WHENS2=>
IFEN12="00"THEN
Z<="0000000010";
ELSIFEN12="01"THEN
Z<="0100000010";
ELSIFEN12="10"THEN
Z<="0000000011";
ELSE
Z<="0000000000";
ENDIF;
WHENS3=>
IFEN12="00"THEN
Z<="0000000100";
ELSIFEN12="01"THEN
Z<="0010000100";
ELSIFEN12="10"THEN
Z<="0000000111";
ELSE
Z<="1111111111";
ENDIF;
WHENS4=>
IFEN12="00"THEN
Z<="0000001000";
ELSIFEN12="01"THEN
Z<="0001001000";
ELSIFEN12="10"THEN
Z<="0000001111";
ELSE
Z<="0000000000";
ENDIF;
WHENS5=>
IFEN12="00"THEN
Z<="0000010000";
ELSIFEN12="01"THEN
Z<="0000110000";
ELSIFEN12="10"THEN
Z<="0000011111";
ELSE
Z<="1111111111";
ENDIF;
WHENS6=>
IFEN12="00"THEN
Z<="0000100000";
ELSIFEN12="01"THEN
Z<="0001001000";
ELSIFEN12="10"THEN
Z<="0000111111";
ELSE
Z<="0000000000";
ENDIF;
WHENS7=>
IFEN12="00"THEN
Z<="0001000000";
ELSIFEN12="01"THEN
Z<="0010000100";
ELSIFEN12="10"THEN
Z<="0001111111";
ELSE
Z<="1111111111";
ENDIF;
WHENS8=>
IFEN12="00"THEN
Z<="0010000000";
ELSIFEN12="01"THEN
Z<="0100000010";
ELSIFEN12="10"THEN
Z<="0011111111";
ELSE
Z<="0000000000";
ENDIF;
WHENS9=>
IFEN12="00"THEN
Z<="0100000000";
ELSIFEN12="01"THEN
Z<="1000000001";
ELSIFEN12="10"THEN
Z<="0111111111";
ELSE
Z<="1111111111";
ENDIF;
WHENS10=>
IFEN12="00"THEN
Z<="1000000000";
ELSIFEN12="01"THEN
Z<="1000000001";
ELSIFEN12="10"THEN
Z<="1111111111";
ELSE
Z<="0000000000";
ENDIF;
ENDCASE;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREBHV;
其波形仿真结果如图:
其中
当CON为1时,正常显示,当其为0时,保持上一次最后花型。
如图所示,
当EN12为00时,LED7S为1111001(即‘1‘的二进制码),此时Z[9]-Z[0]作为流水灯,依次点亮,视为花型1;
当EN12为10时,LED7S为0100100(即‘2‘的二进制码),此时Z[9]-Z[0]作为流水灯,依次逐渐全部点亮,视为花型2;
当EN12为01时,LED7S为0110000(即‘3‘的二进制码),此时Z[9]-Z[0]作为流水灯,依次逐渐由两头向中间挨个点亮,视为花型3;
当EN12为01时,LED7S为0011001(即‘4‘的二进制码),此时Z[9]-Z[0]作为流水灯,全亮之后全灭之后再全亮,即闪烁,视为花型4。
这样可视为完成四种花型的循环彩灯。
其原理图如图:
引脚及开关对应关系如下:
控制引脚
CON
EN1
EN2
对应的开关
SW0
SW1
SW2
硬件测试:
将编译好的的程序下载到实验板中,
当SW1与SW2为00时,数码管显示1,Z[9]-Z[0]挨个依次点亮后又熄灭。
当SW1与SW2为01时,数码管显示2,Z[9]-Z[0]挨个依次点亮最终全部点亮。
当SW1与SW2为10时,数码管显示3,Z[9]-Z[0]依次逐渐由两头向中间挨个点亮。
当SW1与SW2为11时,数码管显示4,Z[9]-Z[0]全亮之后全灭之后再全亮,完成闪烁功能。
当SW0置为0时,彩灯停止变化。
验证试验成功。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安电子科技大学 EDA 实验 报告