西安电子科技大学EDA实验报告文档格式.docx
- 文档编号:21265209
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:18
- 大小:197.96KB
西安电子科技大学EDA实验报告文档格式.docx
《西安电子科技大学EDA实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《西安电子科技大学EDA实验报告文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
Q<
=A;
ELSIFS10="
01"
=B;
10"
=C;
ELSE
=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)
CASEA(3DOWNTO0)IS
WHEN"
0000"
=>
LED7S<
="
1000000"
;
--X“80”->
0
0001"
1111001"
--X“79”->
1
0010"
0100100"
--X“24”->
2
0011"
0110000"
--X“30”->
3
0100"
0011001"
--X“19”->
4
0101"
--X“12”->
5
0110"
0000010"
--X“02”->
6
0111"
1111000"
--X“78”->
7
1000"
0000000"
--X“00”->
8
1001"
0010000"
--X“10”->
9
1010"
0001000"
--X“08”->
A
1011"
0000011"
--X“03”->
B
1100"
1000110"
--X“46”->
C
1101"
0100001"
--X“21”->
D
1110"
0000110"
--X“06”->
E
1111"
0001110"
--X“0E”->
F
WHENOTHERS=>
NULL;
ENDCASE;
ENDPROCESS;
波形仿真如图:
如图,当输入端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,在进程中完成标准逻辑位的加减,结束进程之后将其给输出。
设计框图如上所示。
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT4IS
PORT(CLK:
EN:
CLC:
OUTSTD_LOGIC_VECTOR(3DOWNTO0)
ENDENTITYCNT4;
ARCHITECTUREBHVOFCNT4IS
SIGNALQ1:
STD_LOGIC_VECTOR(3DOWNTO0);
PROCESS(CLK)
IFCLC='
1'
THEN
Q1<
=(OTHERS=>
'
0'
);
ELSIF(CLK'
EVENTANDCLK='
)THEN
IFEN='
=Q1+1;
=Q1-1;
Q<
=Q1;
ENDARCHITECTUREBHV;
波形仿真结果如图:
如上图所示,当CLC=’1’时,清零;
否则,正常计数。
EN=’0’时,减法计数,EN=’1’时,加法计数。
仿真验证实验设计成功。
2.计数器显示译码设计与下载
用原理图输入法的方式,以前面设计的七段译码器DecL7S和计数器为底层元件,完成“计数器显示译码”的顶层文件设计。
设计原理:
为了使数码管的变化能够用肉眼观察,将输入时钟(50MHz)先进行进行50M分频,输出频率为1Hz的时钟。
其中分频器采用M=50M计数器的进位输出端来实现,将分频后的时钟信号送入四位二进制加减可控计数器的时钟输入端。
四位二进制加减可控计数器由实验1中提供,其输出作为七段译码器的输入端。
50M分频器程序设计:
ENTITYCNT5MIS
CLK_OUT:
ENDENTITYCNT5M;
ARCHITECTUREBHVOFCNT5MIS
SIGNALCOUNT:
STD_LOGIC_VECTOR(26DOWNTO0);
PROCESS
WAITUNTILCLK'
;
IF(COUNT<
49999999)THEN
COUNT<
=COUNT+1;
CLK_OUT<
='
ELSE
修改后加减计数器程序:
UPDOWN:
RESET,ENABLE:
IFENABLE='
IFRESET='
IFUPDOWN='
其原理图如下:
其中为了便于观察,我们只仿真未加分频器时的的波形图如下:
其中,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分频器分频。
程序设计如下:
ENTITYLIUSHUIIS
PORT(
CLK:
EN1:
EN2:
CON:
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);
EN12<
=EN1&
EN2;
TONGBU:
PROCESS
CURRENT_STATE<
=NEXT_STATE;
ENDPROCESS;
ZHUANYI:
PROCESS(CURRENT_STATE)
NEXT_STATE<
=CURRENT_STATE;
CASECURRENT_STATEIS
WHENS0=>
NEXT_STATE<
=S1;
WHENS1=>
=S2;
WHENS2=>
=S3;
WHENS3=>
=S4;
WHENS4=>
=S5;
WHENS5=>
=S6;
WHENS6=>
=S7;
WHENS7=>
=S8;
WHENS8=>
=S9;
WHENS9=>
=S0;
ENDCASE;
SHUCHU:
PROCESS(CURRENT_STATE,EN12)
IFCON='
Z<
CASEEN12(1DOWNTO0)IS
=>
LED7S<
="
11"
0000000000"
IFEN12="
0000000001"
ELSIFEN12="
1000000001"
1111111111"
0000000010"
0100000010"
0000000011"
0000000100"
0010000100"
0000000111"
0000001000"
0001001000"
0000001111"
0000010000"
0000110000"
0000011111"
0000100000"
0000111111"
0001000000"
0001111111"
0010000000"
0011111111"
0100000000"
0111111111"
WHENS10=>
1000000000"
其波形仿真结果如图:
其中
当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
将编译好的的程序下载到实验板中,
当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 实验 报告