西安电子科技大学EDA实验报告.docx

上传人:b****5 文档编号:8128957 上传时间:2023-01-29 格式:DOCX 页数:18 大小:197.96KB
下载 相关 举报
西安电子科技大学EDA实验报告.docx_第1页
第1页 / 共18页
西安电子科技大学EDA实验报告.docx_第2页
第2页 / 共18页
西安电子科技大学EDA实验报告.docx_第3页
第3页 / 共18页
西安电子科技大学EDA实验报告.docx_第4页
第4页 / 共18页
西安电子科技大学EDA实验报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

西安电子科技大学EDA实验报告.docx

《西安电子科技大学EDA实验报告.docx》由会员分享,可在线阅读,更多相关《西安电子科技大学EDA实验报告.docx(18页珍藏版)》请在冰豆网上搜索。

西安电子科技大学EDA实验报告.docx

西安电子科技大学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时,彩灯停止变化。

验证试验成功。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1