vhdl实验手册.docx

上传人:b****5 文档编号:6199330 上传时间:2023-01-04 格式:DOCX 页数:30 大小:143.40KB
下载 相关 举报
vhdl实验手册.docx_第1页
第1页 / 共30页
vhdl实验手册.docx_第2页
第2页 / 共30页
vhdl实验手册.docx_第3页
第3页 / 共30页
vhdl实验手册.docx_第4页
第4页 / 共30页
vhdl实验手册.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

vhdl实验手册.docx

《vhdl实验手册.docx》由会员分享,可在线阅读,更多相关《vhdl实验手册.docx(30页珍藏版)》请在冰豆网上搜索。

vhdl实验手册.docx

vhdl实验手册

 

EDA实验指导书

ElectronicDesignAutomation

 

 

张伟、郭顺京编

电工电子实验中心

目录

实验一七人表决器设计1

实验二计数器3

实验三多路选择器6

实验四8-3优先编码器的VHDL设计8

实验五七段数码显示译码器设计11

实验六扫描显示驱动电路设计13

实验七半加器的VHDL设计16

实验八全加器的VHDL设计18

实验九触发器的VHDL设计20

实验十多功能数字钟的VHDL设计23

实验一七人表决器设计

一、实验任务及要求

实验目的:

学习VHDL的CASE语句应用及多层次设计方法。

实验内容:

参加表决者7人,同意者过半则表决通过。

二、实验仪器

计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱

三、设计说明与提示

开关设置:

JP1:

K1-k8

L9-L16

其它

插上

插上

不插

操作运行:

K1~K7代表七个表决者,同意时将开关设为高电平,否则置为低;表决通过时绿灯亮(L16),不通过则黄灯亮(L15)。

程序设计提示

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

ENTITYvote7IS

PORT

(men:

INstd_logic_vector(6downto0);

pass,stop:

bufferstd_logic

);

ENDvote7;

ARCHITECTUREbehaveOFvote7IS

BEGIN

stop<=notpass;

PROCESS(men)

variabletemp:

std_logic_vector(2downto0);

BEGIN

temp:

="000";

foriin0to6loop

if(men(i)='1')then

temp:

=temp+1;

else

temp:

=temp+0;

endif;

endloop;

pass<=temp

(2);

ENDPROCESS;

ENDbehave;

四、实验报告要求

实验报告:

根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。

实验二计数器

一、实验任务及要求

1、设计一个带使能输入及同步清0的增1计数器,仿真波形图见图20-1,实验源程序名是counter1.vhd;

2、设计一个带使能输入及同步清0的增1/减1的8位计数器,仿真波形图见图20-2A和20-2B,实验源程序名是up-down.vhd。

二、实验仪器

计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱

三、设计说明与提示

图20-1计数器2波形图

图20-2A加减控制计数器波形图

在用VHDL语言描述一个计数器时,如果使用了程序包ieee.std_logic_unsigned,则在描述计数器时就可以使用其中的函数“+”(递增计数)和“-”(递减计数)。

假定设计对象是增1计数器并且计数器被说明为向量,则当所有位均为‘1’时,计数器的下一状态将自动变成‘0’。

举例来说,假定计数器的值到达“111”是将停止,则在增1之前必须测试计数器的值。

图20-2B加减控制计数器波形图

如果计数器被说明为整数类型,则必须有上限值测试。

否则,在计数顺值等于7,并且要执行增1操作时,模拟器将指出此时有错误发生。

实验连线:

实验输入信号有clk(时钟信号)、clr(复位信号)、en(使能控制输入信号),clk用CPLD/FPGA适配器板子上的时钟信号,接数字信号源的CLK5,频率调节到1Hz左右,clr、en接拨码开关,工作时clr为低电平,en为高电平;输出信号有Q0~Q3,接LED灯。

实验2输入信号有clk(时钟信号)、rst(复位信号)、en(使能控制输入信号)、up(加减控制输入信号),clk用CPLD/FPGA适配器板子上的时钟信号,接数字信号源的CLK5,频率调节到1Hz左右,rst、en、up接拨码开关,工作时rst和en为高电平,up为高电平时增计数,为低电平时减计数;输出信号有SUM0~SUM2(代表输出数据)和COUT(代表进位或借位),都接LED灯。

在做实验时,请注意仿真波形图中各个输入信号的有效电平。

下面的例子是一个3位增1/减1计数器:

当输入信号UP等于1时计数器增1;当输入信号UP等于0时计数器减1。

Libraryieee;

Useieee.std_logic_1164.all;

Useieee.std_logic_unsigned.all;

Entityup_downis

Port(clk,rst,en,up:

instd_logic;

Sum:

outstd_logic_vector(2downto0);

Cout:

outstd_logic);

End;

Architectureaofup_downis

Signalcount:

std_logic_vector(2downto0);

Begin

Process(clk,rst)

Begin

Ifrst=’0’then

Count<=(others=>’0’);

Elsifrising_edge(clk)then

Ifen=’1’then

Caseupis

When‘1’=>count<=count+1;

Whenothers=>count<=count-1;

Endcase;

Endif;

Endif;

Endprocess;

Sum<=count;

Cout<=’1’whenen=’1’and((up=’1’andcount=7)or(up=’0’andcount=0))else‘0’;

End;

参考以上实例完成实验目的中所要求的3个计数器的设计。

四、实验报告要求

实验报告:

根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。

实验三多路选择器

一、实验任务及要求

实验目的:

熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

实验内容:

1、利用QuartusⅡ完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出图2-2所示的仿真波形。

最后在实验系统上进行硬件测试,验证本项设计的功能。

2、引脚锁定以及硬件下载测试。

若选择目标器件是EP1C6,建议选实验电路模式5(附录图1),用键1(PIO0,引脚号为1)控制s0;用键2(PIO1,引脚号为2)控制s1;a3、a2和a1分别接clock5(引脚号为16)、clock0(引脚号为93)和clock2(引脚号为17);输出信号outy仍接扬声器spker(引脚号为129)。

通过短路帽选择clock0接256Hz信号,clock5接1024Hz,clock2接8Hz信号。

最后进行编译、下载和硬件测试实验(通过选择键1、键2,控制s0、s1,可使扬声器输出不同音调)。

二、实验仪器

计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱

三、设计说明与提示

系统顶层框图:

图2-1双2选1多路选择器

2-2mux21a功能时序波形

程序设计提示

ENTITYmux21aIS

PORT(a,b,s:

INBIT;

y:

OUTBIT);

ENDENTITYmux21a;

ARCHITECTUREoneOFmux21aIS

BEGIN

PROCESS(a,b,s)

BEGIN

IFs='0'THENy<=a;ELSEy<=b;

ENDIF;

ENDPROCESS;

ENDARCHITECTUREone;

四、实验报告要求

实验报告:

根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。

附加内容:

根据本实验以上提出的各项实验内容和实验要求,设计1位全加器。

首先用QuartusⅡ完成给出的全加器的设计,包括仿真和硬件测试。

实验要求分别仿真测试底层硬件或门和半加器,最后完成顶层文件全加器的设计和测试,给出设计原程序,程序分析报告、仿真波形图及其分析报告。

实验习题:

以1位二进制全加器为基本元件,用例化语句写出8位并行二进制全加器的顶层文件,并讨论此加法器的电路特性。

实验四8-3优先编码器的VHDL设计

一、实验的目的

1、通过常见基本组合逻辑电路的设计,熟悉EDA设计流程。

2、熟悉文本输入及仿真步骤。

3、掌握VHDL设计实体的基本结构及文字规则。

4、掌握组合逻辑电路的静态测试方法。

5、理解硬件描述语言和具体电路的映射关系。

二、实验仪器

计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱

三、实验内容

1、实验原理:

允许同时在几个输入端有输入信号,编码器按输入信号排定的优先顺序,只对同时输入的几个信号中优先权最高的一个进行编码。

2、实验步骤:

1)、创建工程。

2)、新建文件夹。

3)、输入正确的源程序,保存,编译。

4)、波形仿真,分配引脚,编译。

5)、下载到试验箱,进行功能验证。

(原理图及仿真的波形界面在备注)

8-3编码器如图8-1所示,其真值表如表8-1。

图8-18-3编码器

表8-18-3优先编码器真值表

输入

输出

EIN

0N

1N

2N

3N

4N

5N

6N

7N

A2N

A1N

A0N

GSN

EON

1

X

X

X

X

X

X

X

X

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

0

0

X

X

X

X

X

X

X

0

0

0

0

0

1

0

X

X

X

X

X

X

0

1

0

0

1

0

1

0

X

X

X

X

X

0

1

1

0

1

0

0

1

0

X

X

X

X

0

1

1

1

0

1

1

0

1

0

X

X

X

0

1

1

1

1

1

0

0

0

1

0

X

X

0

1

1

1

1

1

1

0

1

0

1

0

X

0

1

1

1

1

1

1

1

1

0

0

1

0

0

1

1

1

1

1

1

1

1

1

1

0

1

实验源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYENCODERIS

PORT(

D:

INSTD_LOGIC_VECTOR(0TO7);

A:

OUTSTD_LOGIC_VECTOR(0TO2)

);

END;

ARCHITECTUREXIANIOFENCODERIS

BEGIN

PROCESS(D)

BEGIN

IF(D(7)='0')THENA<="111";

ELSIF(D(6)='0')THENA<="110";

ELSIF(D(5)='0')THENA<="101";

ELSIF(D(4)='0')THENA<="100";

ELSIF(D(3)='0')THENA<="011";

ELSIF(D

(2)='0')THENA<="010";

ELSIF(D

(1)='0')THENA<="001";

ELSIF(D(0)='0')THENA<="000";

ELSEA<="ZZZ";

ENDIF;

ENDPROCESS;

END;

四、实验研究与思考

实验报告:

根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。

1、时序电路的设计与组合电路的设计有何差别?

2、时序电路的同步设计和异步设计有何不同?

3、异步设计的竞争冒险现象如何产生,应该如何克服竞争冒险现象?

实验五七段数码显示译码器设计

一、实验任务及要求

实验目的:

学习7段数码显示译码器设计;学习VHDL的CASE语句应用及多层次设计方法。

实验原理:

7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。

实验三作为7段译码器设计,输出信号LED7S的7位分别接如图3-1数码管的7个段,高位在左,低位在右。

例如当LED7S输出为“1101101”时,数码管的7个段:

g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。

注意,这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h,例3中的LED7S:

OUTSTD_LOGIC_VECTOR(6DOWNTO0)应改为…(7DOWNTO0)。

实验内容:

1、设计7段数码显示译码器电路。

在QuartusII上对该程序进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。

提示:

用输入总线的方式给出输入信号仿真数据,仿真波形示例图如图3-3所示。

2、引脚锁定及硬件测试。

建议选GW48系统的实验电路模式6(参考附录图8),用数码8显示译码输出(PIO46-PIO40),键8、键7、键6和键5四位控制输入,硬件验证译码器的工作性能。

二、实验仪器

计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱

三、设计说明与提示

共阴数码管电路图:

图3-1共阴数码管及其电路

系统顶层框图:

图3-2计数器和译码器连接电路的顶层文件原理图

图3-37段译码器仿真波形

 

程序设计提示

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDECL7SIS

PORT(A:

INSTD_LOGIC_VECTOR(3DOWNTO0);

LED7S:

OUTSTD_LOGIC_VECTOR(6DOWNTO0));

END;

ARCHITECTUREoneOFDECL7SIS

BEGIN

PROCESS(A)

BEGIN

CASEAIS

WHEN"0000"=>LED7S<="0111111";

WHEN"0001"=>LED7S<="0000110";

WHEN"0010"=>LED7S<="1011011";

WHEN"0011"=>LED7S<="1001111";

WHEN"0100"=>LED7S<="1100110";

WHEN"0101"=>LED7S<="1101101";

WHEN"0110"=>LED7S<="1111101";

WHEN"0111"=>LED7S<="0000111";

WHEN"1000"=>LED7S<="1111111";

WHEN"1001"=>LED7S<="1101111";

WHEN"1010"=>LED7S<="1110111";

WHEN"1011"=>LED7S<="1111100";

WHEN"1100"=>LED7S<="0111001";

WHEN"1101"=>LED7S<="1011110";

WHEN"1110"=>LED7S<="1111001";

WHEN"1111"=>LED7S<="1110001";

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

END;

四、实验报告要求

实验报告:

根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和实验过程;设计程序、程序分析报告、仿真波形图及其分析报告。

实验六扫描显示驱动电路设计

一、实验目的

1、了解实验系统中8位八段数码管显示模块的工作原理;

2、掌握计数器和地址发生器的VHDL描述方法;

3、掌握LED数码管7段译码器的VHDL描述方法;

4、掌握编码器的VHDL描述方法;

5、设计标准扫描驱动电路模块,以备后面实验用。

二、实验仪器

计算机、Max+plusII或QuartusII软件、GW48型EDA实验箱

三、实验内容

图9.1所示的是8位数码扫描显示电路,其中每个数码管的8个段:

h、g、f、e、d、c、b、a(h是小数点)都分别连在一起,8个数码管分别由8个选通信号k1、k2、…k8来选择。

被选通的数码管显示数据,其余关闭。

如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。

根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1、k2、…k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。

其VHDL示例程序如程序10.1所示。

图9.18位数码扫描显示电路图

1、实验内容1:

理解程序中各语句的含义,以及该例的整体功能。

对该例进行编辑、编译、综合、适配、仿真,给出仿真波形。

实验方式:

若考虑小数点,SG的8个段分别与PIO49、PIO48、…、PIO42(高位在左)、BT的8个位分别与PIO34、PIO35、…、PIO41(高位在左);电路模式不限,引脚图参考附图11。

将GW48EDA系统左下方的拨码开关全部向上拨,这时实验系统的8个数码管构成图10.1的电路结构,时钟CLK可选择clock0,通过跳线选择16384Hz信号。

引脚锁定后进行编译、下载和硬件测试实验。

将实验过程和实验结果写进实验报告。

2、实验内容2:

修改例9.1的进程P1中的显示数据直接给出的方式,增加8个4位锁存器,作为显示数据缓冲器,使得所有8个显示数据都必须来自缓冲器。

缓冲器中的数据可以通过不同方式锁入,如来自A/D采样的数据、来自分时锁入的数据、来自串行方式输入的数据,或来自单片机等。

3、自行设定实验步骤和设计纪录方式,完成实验报告

【例9.1】

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;

例9.1是扫描显示的示例程序,其中clk是扫描时钟;SG为7段控制信号,由高位至低位分别接g、f、e、d、c、b、a7个段;BT是位选控制信号,接图5-20中的8个选通信号:

k1、k2、…k8。

程序中CNT8是一个3位计数器,作扫描计数信号,

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

当前位置:首页 > 高中教育 > 高中教育

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

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