eda实验报告.docx

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

eda实验报告.docx

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

eda实验报告.docx

eda实验报告

 

EDA技术与VHDL

 

实验报告

 

电气工程系

电子信息工程

 

实验一:

1位全加器设计

实验目的:

I113

1.学习QuartusII9.1集成开发环境的使用方法以及如何建立工程和文件;

2.用原理图输入设计法和

VHDL文本输入设计法设计

1位全加器;

3.通过电路仿真和硬件验证,进一步了解

1位全加器的功能

I113

实验内容:

用原理图输入设计法和

VHDL文本输入设计法分别设计

1位全加器,并下载到CH4实验

箱上运行。

实验原理:

1位全加器可以由两个半加器和一个或门连接而成,因而可根据半加器的电路(如

图3-1所示)或真值表写出或门和半加器的VHDL描述。

然后根据图3-2写出全加器的顶层描述。

 

co

a

b

so

co

0

0

0

0

a

and2

0

1

1

0

b

not

xnor2

so

1

0

1

0

1

1

0

1

图3-1

半加器h_adder电路图及其真值表

u1

d

h_adder

a

or2a

ain

h_adder

c

cout

f_adder

cout

ain

A

co

A

co

fb

bin

sum

bin

B

so

e

B

so

u3

sum

cin

cin

u2

图3-2全加器f_adder电路图及其实体模块

实验步骤:

1.打开实验箱电源;

2.输入移位寄存器VHDL程序;

 

3.点击图标,进行分析和综合;

4.建立波形文件,进行功能仿真;

5.按接线图配置FPGA引脚;

 

6.点击图标,进行编译;

7.下载****.sof配置文件到EP3C16Q240C8中;

1半加器的vhdl描述有两种,我用的是下面这种,布尔函数描述法:

(1)布尔函数描述方法的VHDL源程序如下:

LIBRARYIEEE;--半加器描述

(1):

布尔方程描述方法

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYh_adderIS

PORT(a,b:

INSTD_LOGIC;

co,so:

OUTSTD_LOGIC);

 

ENDENTITYh_adder;

ARCHITECTUREfh1OFh_adderis

BEGIN

so<=NOT(aXOR(NOTb));co<=aANDb;

ENDARCHITECTUREfh1;

(2)或门逻辑描述:

LIBRARYIEEE;--或门逻辑描述

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYor2aIS

PORT(a,b:

INSTD_LOGIC;

c:

OUTSTD_LOGIC);

ENDENTITYor2a;

ARCHITECTUREoneOFor2aIS

BEGIN

c<=aORb;

ENDARCHITECTUREone;

(3)1位二进制全加器顶层设计描述:

LIBRARYIEEE;--1位二进制全加器顶层设计描述

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYf_adderIS

PORT(ain,bin,cin:

INSTD_LOGIC;

cout,sum:

OUTSTD_LOGIC);

ENDENTITYf_adder;

ARCHITECTUREfd1OFf_adderIS

COMPONENTh_adder--调用半加器声明语句

PORT(a,b:

INSTD_LOGIC;

co,so:

OUTSTD_LOGIC);

ENDCOMPONENT;

COMPONENTor2a

PORT(a,b:

INSTD_LOGIC;

c:

OUTSTD_LOGIC);

ENDCOMPONENT;

SIGNALd,e,f:

STD_LOGIC;--定义3个信号作为内部的连接线。

BEGIN

u1

:

h_adderPORTMAP(a=>ain,b=>bin,co=>d

,so=>e);

--例化语句

u2

:

h_adderPORTMAP(a=>e,

b=>cin,co=>f,so=>sum);

u3

:

or2aPORTMAP(a=>d,

b=>f,c=>cout);

ENDARCHITECTUREfd1;

 

实验结果:

 

实验二:

移位寄存器模块

实验目的:

1设计8位CPU设计中常用的移位寄存器模块

2用case语句设计并行输入输出的移位寄存器

3体会信号赋值的特性

实验内容:

编写移位寄存器的VHDL实现程序;通过电路仿真和硬件验证,进一步了解移位寄存器的功能。

设计原理:

LibraryIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYSHIFTIS

PORT(CLK,C0:

INSTD_LOGIC;--时钟和进位输入

MD:

INSTD_LOGIC_VECTOR(2DOWNTO0);

--移位模式控制字

D:

INSTD_LOGIC_VECTOR(7DOWNTO0);

--待加载移位的数据

QB:

OUTSTD_LOGIC_VECTOR(7DOWNTO0);移--位数据输出

CN:

OUTSTD_LOGIC);--进位输出

 

ENDENTITY;

ARCHITECTUREBEHAVOFSHIFTIS

SIGNALREG:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALCY:

STD_LOGIC;

BEGIN

PROCESS(CLK,MD,C0)

BEGIN

IFCLK‘EVENTANDCLK=’1‘THEN

CASEMDIS

WHEN"001"=>REG(0)<=C0;

REG(7DOWNTO1)<=REG(6DOWNTO0);CY<=REG(7);

--带进位循环左移

WHEN"010"=>REG(0)<=REG(7);

REG(7DOWNTO1)<=REG(6DOWNTO0);

--自循环左移

WHEN"011"=>REG(7)<=REG(0);

REG(6DOWNTO0)<=REG(7DOWNTO1);

--自循环右移

WHEN"100"=>REG(7)<=C0;

REG(6DOWNTO0)<=REG(7DOWNTO1);CY<=REG(0);

 

WHEN"101"=>

 

REG(7DOWNTO0)<=

--带进位循环右移

D(7DOWNTO0);

--加载待移数

WHENOTHERS=>REG<=REGCY;<=CY;--保持

ENDCASE;

ENDIF;

ENDPROCESS;

QB(7DOWNTO0)<=REG(7DOWNTO0);CN<=CY;--移位后输出

ENDBEHAV;

实验步骤:

1.打开实验箱电源;

2.输入移位寄存器VHDL程序;

 

3.点击图标,进行分析和综合;

4.建立波形文件,进行功能仿真;

5.按接线图配置FPGA引脚;

 

6.点击图标,进行编译;

7.下载****.sof配置文件到EP3C16Q240C8中;

实验结果:

 

实验三:

计数器和移位寄存器设计

一、十进制加法计数器

实验目的:

设计带有异步复位和同步时钟使能的十进制加法计数器。

实验内容:

编写十进制加法计数器的VHDL实现程序;通过电路仿真和硬件验证,了解变量的使用方法,以及“(OTHERS=>X)”的使用方法。

设计原理:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

 

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT10IS

PORT(CLK,RST,EN:

INSTD_LOGIC;

CQ:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

COUT:

OUTSTD_LOGIC);

ENDCNT10;

ARCHITECTUREbehavOFCNT10IS

BEGIN

PROCESS(CLK,RST,EN)

VARIABLECQI:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFRST='1'THENCQI:

=(OTHERS=>'0');--计数器异步复位

ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿

IFEN='1'THEN--检测是否允许计数(同步使能)

IFCQI<9THENCQI:

=CQI+1;

--允许计数,检测是否小于

ELSECQI:

=(OTHERS=>'0');--大于9,计数值清零

ENDIF;

ENDIF;

ENDIF;

IFCQI=9THENCOUT<='1';--计数大于9,输出进位信号

ELSECOUT<='0';

ENDIF;

CQ<=CQI;--将计数值向端口输出

ENDPROCES

ENDbehav;

9

实验步骤:

1.打开实验箱电源;

2.输入移位寄存器

 

VHDL程序;

3.点击图标,进行分析和综合;

4.建立波形文件,进行功能仿真;

5.按接线图配置FPGA引脚;

 

6.点击图标,进行编译;

实验结果:

 

1、引脚图:

 

二、移位寄存器设计

实验目的:

设计带有同步并行预置功能的8位右移移位寄存器。

实验内容:

CLK是移位时钟信号,DIN是8位并行预置数据端口,LOAD是并行数据预置使能信号,

QB是串行输出端口

设计原理:

LIBRARYIEEE;

 

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYSHFRTIS--8位右移寄存器

PORT(CLK,LOAD:

INSTD_LOGIC;

DIN:

INSTD_LOGIC_VECTOR(7DOWNTO0);

QB:

OUTSTD_LOGIC);

ENDSHFRT;

ARCHITECTUREbehavOFSHFRTIS

 

IFLOAD='1'THENREG8:

=DIN;

--由(LOAD='1')装载新数据

ELSEREG8(6DOWNTO0):

=REG8(7DOWNTO1);

ENDIF;

ENDIF;

QB<=REG8(0);--输出最低位

ENDPROCESS;

ENDbehav;

实验步骤:

1.打开实验箱电源;

2.输入移位寄存器VHDL程序;

 

3.点击图标,进行分析和综合;

4.建立波形文件,进行功能仿真;

5.按接线图配置FPGA引脚;

 

6.点击图标,进行编译;

7.下载****.sof配置文件到EP3C16Q240C8中;

实验结果:

 

实验四:

七段数码显示译码器和数控分频器设计

一.七段数码显示译码器

实验目的:

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

实验内容:

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

提示:

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

 

引脚锁定及硬件测试

设计原理:

7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制

BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制

的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实

现。

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.打开实验箱电源;

2.输入移位寄存器

 

VHDL程序;

3.点击图标,进行分析和综合;

4.建立波形文件,进行功能仿真;

5.按接线图配置FPGA引脚;

 

6.点击图标,进行编译;

7.下载****.sof配置文件到EP3C16Q240C8中;

实验结果:

 

二.数控分频器设计

实验目的:

学习数控分频器的设计、分析和测试方法。

实验内容:

根据波形图,分析VHDL中的各语句功能、设计原理及逻辑功能,详述进程P_REG和P_DIV的作用,并画出该程序的RTL电路图。

输入不同的CLK频率和预置值D,给出时序波

形。

在实验系统上硬验证。

 

给出不同输入值

 

D时,FOUT输出不同频率

设计原理:

数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的

分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出

位与预置数加载输入信号相接即可。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDVFIS

PORT(CLK:

INSTD_LOGIC;

D:

INSTD_LOGIC_VECTOR(7DOWNTO0);

 

FOUT:

OUTSTD_LOGIC);

END;

ARCHITECTUREoneOFDVFIS

SIGNALFULL:

STD_LOGIC;

BEGIN

P_REG:

PROCESS(CLK)

VARIABLECNT8:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFCNT8="11111111"THEN

CNT8:

=D;

--当CNT8计数计满时,输入数据

 

D被同步预置给计

--数器CNT8

FULL<='1';--同时使溢出标志信号FULL输出为高电平

ELSECNT8:

=CNT8+1;--否则继续作加1计数

FULL<='0';--且输出溢出标志信号FULL为低电平

ENDIF;

ENDIF;

ENDPROCESSP_REG;

P_DIV:

PROCESS(FULL)

VARIABLECNT2:

STD_LOGIC;

BEGIN

IFFULL'EVENTANDFULL='1'THEN

CNT2:

=NOTCNT2;

--如果溢出标志信号FULL为高电平,D触发器输出取反

IFCNT2='1'THENFOUT<='1';ELSEFOUT<='0';

ENDIF;

ENDIF;

ENDPROCESSP_DIV;

END;

实验步骤:

1.打开实验箱电源;

2.输入移位寄存器VHDL程序;

 

3.点击图标,进行分析和综合;

4.建立波形文件,进行功能仿真;

5.按接线图配置FPGA引脚;

 

6.点击图标,进行编译;

7.下载****.sof配置文件到EP3C16Q240C8中;

实验结果:

 

实验五:

单进程Moore状态机

实验目的:

测试单进程Moore状态机。

实验内容:

在QuartusII上对该例进行编辑、编译、综合、适配、仿真,给出单进程状态机的工作时序,分析本实例VHDL程序。

设计原理:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMOORE1IS

PORT(DATAIN:

INSTD_LOGIC_VECTOR(1DOWNTO0);

CLK,RST:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

 

ENDMOORE1;

ARCHITECTUREbehavOFMOORE1IS

TYPEST_TYPEIS(ST0,ST1,ST2,ST3,ST4);

SIGNALC_ST:

ST_TYPE;

BEGIN

PROCESS(CLK,RST)

BEGIN

IFRST='1'THENC_ST<=ST0;Q<="0000";

ELSIFCLK'EVENTANDCLK='1'THEN

CASEC_STIS

WHENST0=>IFDATAIN="10"THENC_ST<=ST1;

ELSEC_ST<=ST0;ENDIF;

Q<="1001";

WHENST1=>IFDATAIN="11"THENC_ST<=ST2;

ELSEC_ST<=ST1;ENDIF;

Q<="0101";

WHENST2=>IFDATAIN="01"THENC_ST<=ST3;

ELSEC_ST<=ST0;ENDIF;

Q<="1100";

WHENST3=>IFDATAIN="00"THENC_ST<=ST4;

ELSEC_ST<=ST2;ENDIF;

Q<="0010";

WHENST4=>IFDATAIN="11"THENC_ST<=ST0;

ELSEC_ST<=ST3;ENDIF;

Q<="1001";

WHENOTHERS=>C_ST<=ST0;

ENDCASE;

ENDIF;

ENDPROCESS;

ENDbehav;

实验步骤:

1.打开实验箱电源;

2.输入移位寄存器VHDL程序;

 

3.点击图标,进行分析和综合;

4.建立波形文件,进行功能仿真;

5.按接线图配置FPGA引脚;

 

6.点击图标,进行编译;

7.下载****.sof配置文件到EP3C16Q240C8中;

实验结果:

 

状态转换图:

 

实验六:

Mealy状态机

实验目的:

测试Mealy状态机。

实验内容:

在QuartusII上对该例进行编辑、编译、综合、适配、仿真,给出两个程序实现Mealy

状态机的工作时序,分析本实例VHDL程序。

设计原理:

与Moore状态机相比,mealy状态机的输出变化要领先一个周期,即一段输入信号或状

态发生变化,输出信号即发生变化。

程序一是两进程Mealy型状态机。

程序二是在程序一的基础上在COM1的进程中增加了一个IF语句,由此产生一个锁存

器,Q输出的时序是一致的,没有发生锁存后延时一个周期的现象。

测试两种实现方式的工作时序。

VHDL程序一:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYMEALY1IS

PORT(CLK,DATAIN,RESET:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(4DOWNTO0));

ENDMEALY1;

ARCHITECTUREbehavOFMEALY1IS

TYPEstatesIS(st0,st1,st2,st3,st4);

SIGNALSTX:

states;

BEGIN

COMREG:

PROCESS(CLK,RESET)BEGIN--决定转换状态的进程

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

当前位置:首页 > 求职职场 > 简历

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

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