EDA实验指导.docx

上传人:b****8 文档编号:10947745 上传时间:2023-02-23 格式:DOCX 页数:59 大小:1.09MB
下载 相关 举报
EDA实验指导.docx_第1页
第1页 / 共59页
EDA实验指导.docx_第2页
第2页 / 共59页
EDA实验指导.docx_第3页
第3页 / 共59页
EDA实验指导.docx_第4页
第4页 / 共59页
EDA实验指导.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

EDA实验指导.docx

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

EDA实验指导.docx

EDA实验指导

 

EDA技术实验讲义

中南民族大学电子信息工程学院

2007年9月

前言

EDA技术是一门实验性较强的课程,实验环节有着重要和不可替代的作用。

为了方便老师的实验教学,也便于同学们能顺利地完成实验,在最短的时间内掌握EDA技术的基础和重点,结合教材和实验室现有设备,我们编写了该实验讲义。

EDA技术与VHDL作为一门专业基础课和现代电子设计技术的先修课程,与许多的后继专业课有紧密的联系,通过该课程的学习将为后续课程学习打下基础。

希望同学们通过实验达到下列基本要求:

初步掌握基于EDA技术的数字系统设计方法和可编程器件设计方法;了解常用硬件描述语言的使用特点、编程方法和仿真测试技术,初步掌握VHDL的编程技术和硬件描述方法;学会熟练使用QuartusⅡ软件的设计应用方法、测试方法和综合优化技术;掌握常用的FPGA和CPLD器件的设计方法和接口技术;同时对EDA的发展及其前沿技术、对硬件描述语言的发展有比较清楚的了解。

本讲义的编写过程中,肖风华、程耀林、陈军波以及教研室的其他老师提出了许多宝贵的意见和建议。

在此对各位老师表示感谢。

由于EDA技术是不断发展的新技术,而本讲义是第一次编写,错误和遗漏在所难免,请老师和同学们提出宝贵意见。

谢勤岚

2007年9月

目录

实验一应用QuartusII完成基本组合电路设………………………3

实验二应用QuartusII完成基本时序电路设计…………………...10

实验三设计含异步清0和同步时钟使能的十进制加法计数器….13

实验四8位数码扫描显示电路设计……………………………......15

实验五32位并进/并出移位寄存器设计……………………………21

实验六数控分频器的设计…………………………………………..24

实验七在QuartusII中用原理图输入法设计8位全加器………….27

实验八在QuartusII中用原理图输入法设计较复杂数字系统…….33

实验九8位16进制频率计设计………………………………….37

实验一、应用QuartusII完成基本组合电路设计

一、实验目的:

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

二、实验内容1:

首先利用QuartusⅡ完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出仿真波形,验证本项设计的功能。

三、实验步骤

1、先新建一个文件夹存放该工程,例如,E:

\experiment\mux21a;打开QuartusⅡ的操作界面,新建一个VHDL文件

用VHDL编写程序

entitymux21ais

port(a,b,s:

inbit;

y:

outbit);

endentitymux21a;

architectureoneofmux21ais

begin

y<=awhens='0'elseb;

endarchitectureone;

(关键词不区分大小写)

2、保存到所新建的目录下,即E:

\experiment\mux21a。

并在“Createnewprojectbasedonthisfile"前划勾,以新建一个新的工程。

(如需给工程增加文件,可在“Filename”键入文件名)

选择器件如下图所示:

CycloneEP1C6Q240C8

出现此目录,则表明工程新建完毕。

3、编译:

"processing"—>"startcompliation",或者用快捷键"Ctrl+L",有误则对原文件进行修改,直到编译成功。

4、波形仿真:

先新建一个波形文件,选择菜单File-->New命令,在New窗口中选择OtherFile的VectorWaveformFile选项,单击OK按钮,即出现空白的波形编辑器。

再设置仿真时间区域。

选择菜单EditEndTime命令,在弹出的窗口中的Time文本框输入50,单位选择μs,并存盘。

再将工程mux21a的端口信号节点选入波形编辑器。

选择菜单ViewUtilityWindowsNodeFinder,在Filter框中选择Pins:

all,然后单击list,即出现该工程中的所有端口引脚名。

最后用鼠标将需要的节点信号(a,b,s,y)拖到波形编辑器中。

也可直接双击"NameValue"下的空白处,出现下图,可在波形编辑器中添加节点。

依次可增加输入信号a,b,s;输出信号y,如下图所示

仿真器参数设置。

选择菜单AssignmentSettings,在Settings窗口下选择CategoryFitterSettingSimulator,在右侧的Simulation下选择Timing,即选择时序仿真,并选择仿真文件mux21a.vwf。

设置输入信号,将输入a点蓝,再点击左边的时钟信号,即出现下图,选择周期0.5us(注意单位)。

同理设置输入b和s,周期分别为2us和10us。

最后启动仿真器,并观察仿真结果。

选择ProcessingStartSimulation,直到出现Simulationwassuccessful,仿真结束。

仿真波形文件SimulationReport会自动弹出,如下图

四、实验报告:

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

五、实验习题:

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

 

实验二、应用QuartusII完成基本时序电路的设计

一、实验目的:

熟悉QuartusⅡ的VHDL文本设计过程,学习简单时序电路的设计、仿真和测试。

二、实验内容1:

根据实验的步骤和要求,设计触发器,给出程序设计、软件编译、仿真分析及详细实验过程。

实验步骤:

1、参考实验一,新建一个新工程E:

\experiment\DFF1,文件名和路径参考下图

2、设计VHDL程序,参考程序如下

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDFF1IS

PORT(CLK:

INSTD_LOGIC;

D:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC);

END;

ARCHITECTUREbhvOFDFF1IS

SIGNALQ1:

STD_LOGIC;--类似于在芯片内部定义一个数据的暂存节点

BEGIN

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'

THENQ1<=D;

ENDIF;

ENDPROCESS;

Q<=Q1;--将内部的暂存数据向端口输出

ENDbhv;

编译通过以后,再进行波形仿真。

3、波形仿真。

新建一个波形文件NewOtherfilesVectorWaveformFile,输入要观察的节点CLK,D,Q,并设置观察的时间段(50us)、时钟CLK的周期,以及D的值,例如,将CLK设置为2.0us,D设置为5.0us。

如下图

进行仿真"Processing"“statrsimulation",直到出现仿真波形

从图中可以看出,只有在时钟CLK的上跳沿,D才将值传给Q,并在下一个时钟的上跳沿来临前,一直保持该值。

三、实验内容2:

设计锁存器,同样给出程序设计、软件编译、仿真分析及详细实验过程。

1、参考程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDFF2IS

PORT(CLK:

INSTD_LOGIC;

D:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC);

END;

ARCHITECTUREbhv2OFDFF2IS

BEGIN

PROCESS(CLK,D)

BEGIN

IFCLK='1'--电平触发型计数器

THENQ<=D;

ENDIF;

ENDPROCESS;

ENDbhv2;

2、波形仿真

为了便于与上面的触发器相比较,这里CLK和D的设置都于上面一样,周期分别是2us和5us,观察的时间段为50us。

四、实验报告:

分析比较实验内容1和2的仿真和实测结果,说明这两种电路的异同点。

将实验项目分析设计,仿真和测试写入实验报告。

将2个电路进行比较,其波形图如下:

CLK=5us,D=8us

 

实验三、设计含异步清0和同步时钟使能的十进制加法计数器

一、实验目的:

学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。

二、实验原理:

分析并理解参考程序中的语句。

参考程序如下:

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;--允许计数,检测是否小于9

ELSECQI:

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

ENDIF;

ENDIF;

ENDIF;

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

ELSECOUT<='0';

ENDIF;

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

ENDPROCESS;

ENDbehav;

三、实验内容1:

在QuartusⅡ上进行编辑、编译、综合、适配、仿真。

说明例中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。

实验步骤:

1、新建VHDL文件,编辑该程序,编译直至通过

2、波形仿真:

新建波形文件设置仿真时间区域(50us)存盘选择信号节点编辑输入波形总线数据格式设置仿真参数设置启动仿真器并观察结果。

(便于观察,可参考将CLK周期为设置2us,总线CQ设置为十进制。

仿真结果如下:

可看出在清零信号RST=1时,CQ=0;并在使能信号EN=1时,在每个时钟上跳沿时,CQ都加1,直到9时,返回0,进位端COUT=1,即完成十进制的计数功能。

3、综合

选择ToolsRTLViewer,观察综合后的RTL电路。

可看出,电路主要由1个比较器、1个加法器、4个多路选择器和一个4位锁存器组成。

CNT10工程的RTL电路图

五、思考题:

在参考程序中是否可以不定义信号CQI,而直接用输出端口信号完成加法运算,即:

CQ<=CQ+1?

为什么?

六、实验报告:

将实验原理、设计过程、仿真波形和分析结果写进实验报告。

 

实验四、8位数码扫描显示电路设计

一、实验目的:

学习硬件扫描显示电路的设计。

二、实验原理:

图4-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分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。

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

k1、k2、…k8。

程序中CNT8是一个3位计数器,作扫描计数信号,由进程P2生成;进程P3是7段译码查表输出程序;进程P1是对8个数码管选通的扫描程序,例如当CNT8等于"001"时,K2对应的数码管被选通,同时,A被赋值3,再由进程P3译码输出"1001111",显示在数码管上即为“3”;当CNT8扫变时,将能在8个数码管上显示数据:

13579BDF。

图4-18位数码扫描显示电路

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;

三、实验内容1:

说明参考程序中各语句的含义,以及该例的整体功能。

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

实验方式:

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

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

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

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

步骤:

1、按上述程序编写VHDL文件,编译通过。

2、波形仿真

四、实验内容2:

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

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

步骤:

1、设计4位锁存器

(1)参考程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDFF_4IS

PORT(CLK:

INSTD_LOGIC;

D:

INSTD_LOGIC_VECTOR(3DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDENTITY;

ARCHITECTUREbehavOFDFF_4IS

BEGIN

PROCESS(CLK,D)

BEGIN

IFCLK='1'

THENQ<=D;

ENDIF;

ENDPROCESS;

END;

(2)波形仿真:

设置为:

CLK为50ns,D(0)为100ns,D

(1)为200ns,D

(2)为300ns,D(4)为400ns,

从波形图可以看出,在时钟为高时,D将数据传递给Q,在时钟为低时,Q会将当前值一直保持到下一个高时钟。

(3)包装元件入库

选择"File""Create/update""Createsymbolfilesforcurrentfile",将当前文件变成一个包装好的单一元件DFF_4,并放置在工程路径指定的目录中以备后用。

(参见实验七)

2、将锁存器的十六进制输入转变为可直接与数码管连接的输出

参见实验七的原理图输入法,建立一个工程目录DFF_4_0,再新建文件“File”->“New”->“BlockDiagram/SchematicFile”。

调入上实验中的包装入库的元件DFF_4,以及元件74248和输入输出元件,按下图连接。

编译成功后,包装元件入库,生成元件DFF_4_0,在后面将会使用到。

3、扫描电路

(1)参考程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYSCAN_LED_1IS

PORT(CLK:

INSTD_LOGIC;

A0:

INSTD_LOGIC_VECTOR(6DOWNTO0);--锁存的数据

A1:

INSTD_LOGIC_VECTOR(6DOWNTO0);

A2:

INSTD_LOGIC_VECTOR(6DOWNTO0);

A3:

INSTD_LOGIC_VECTOR(6DOWNTO0);

A4:

INSTD_LOGIC_VECTOR(6DOWNTO0);

A5:

INSTD_LOGIC_VECTOR(6DOWNTO0);

A6:

INSTD_LOGIC_VECTOR(6DOWNTO0);

A7:

INSTD_LOGIC_VECTOR(6DOWNTO0);

SG:

OUTSTD_LOGIC_VECTOR(6DOWNTO0);--段控制信号输出

BT:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));--位控制信号输出

ENDENTITY;

ARCHITECTUREoneOFSCAN_LED_1IS

SIGNALCNT8:

STD_LOGIC_VECTOR(2DOWNTO0);

SIGNALAA:

INTEGERRANGE0TO7;

BEGIN

p1:

PROCESS(CNT8)

BEGIN

CASECNT8IS

WHEN"000"=>BT<="00000001";AA<=0;

WHEN"001"=>BT<="00000010";AA<=1;

WHEN"010"=>BT<="00000100";AA<=2;

WHEN"011"=>BT<="00001000";AA<=3;

WHEN"100"=>BT<="00010000";AA<=4;

WHEN"101"=>BT<="00100000";AA<=5;

WHEN"110"=>BT<="01000001";AA<=6;

WHEN"111"=>BT<="10000000";AA<=7;

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESSP1;

P2:

PROCESS(CLK)

BEGIN

IFCLK'EVENTANDCLK='1'THENCNT8<=CNT8+1;

ENDIF;

ENDPROCESSP2;

P3:

PROCESS(AA)

BEGIN

CASEAAIS

WHEN0=>SG<=A0;WHEN1=>SG<=A1;

WHEN2=>SG<=A2;WHEN3=>SG<=A3;

WHEN4=>SG<=A4;WHEN5=>SG<=A5;

WHEN6=>SG<=A6;WHEN7=>SG<=A7;

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESSP3;

END;

(2)波形仿真

(3)包装元件入库

4、带锁存器的扫描电路的原理图

建立一个工程目录SCAN_LEC_2,再新建文件“File”->“New”->“BlockDiagram/SchematicFile”。

调入上面实验中的包装入库的元件DFF_4_0、SCAN_LED_1以及输入输出元件,按下图连接。

波形仿真:

编译通过后,再进行波形仿真,如下图

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

当前位置:首页 > 高等教育 > 哲学

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

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