您的当前位置:首页正文

华南理工大学数字系统设计实验2报告

来源:画鸵萌宠网
实验二地

点:

组合逻辑、时序逻辑基本模块电路设计31号楼2017年11月24日

312房;实验台号:

分:

12

实验日期与时间:预习检查纪录:

批改教师:

报告内容:

一、实验要求

完成3-8译码器的仿真实验设计,并且将编译好的程序生成可下载文件,将生成文

件通过USB-blaster为FPGA编程;

设计一个将系统时钟50MHz分频为1Hz的时钟的分频器,并且将编译好的程序生

成可下载文件,将生成文件通过USB-blaster为FPGA编程;

按照《USB-blaster驱动安装教程》安装完usb-blaster驱动,并且完成下载;会查看芯片资料,例如数据手册,进而完成实验设计;

借助younever_v1.2信号分配表,学会在下载编程时,正确分配引脚。二、实验内容

13-8译码器设计1.1设计要求

1)3个译码输入端A、B、C,分别对应开发板上表示为ONDIP的2,3,42)EN为使能端(低电平有效),对应开发板上表示为ONDIP的1管脚3)Y为译码输出,8位位矢量类型。D3至D104)输入采用电平开关,译码输出采用LED指示灯显示5)管脚对应见表2所示的信号分配表。6)译码表如下表1:

1

表1译码表

表2信号分配表

编号1234567891011

信号名50MHzSW0SW1SW2SW3LED0LED1LED2LED3LED4LED5

信号说明主时钟按下为低电平按下为低电平按下为低电平按下为低电平低电平点亮低电平点亮低电平点亮低电平点亮低电平点亮低电平点亮

EP2C8Q208Bank1_23_IBank2_208_IOBank2_198_IOBank2_201_IOBank2_199_IOBank2_207_IOBank2_203_IOBank2_206_IOBank2_205_IOBank2_200_IOBank2_195_IO

2

1.2设计思路

3个译码输入端A、B、C,EN为使能端,Y[0]到Y[7]为输出端。其中,输入和输出的逻辑关系见表1。整体设计见图1。使用到case语句和if语句

图13-8译码器输入输出框架

1.3VHDL描述

用QuartusII9.0设计3-8译码器,代码如下:-----------------------------------------------------------VHDLexperience2

--QuartusIIversion:QuartusII9.0--ChenYirong--2017.11.24

-----------------------------------------------------------includelibraryLIBRARYIEEE;--includepackage

USEIEEE.std_logic_1164.ALL;USEIEEE.std_logic_unsigned.all;

---------------------------------------------------------3

--usepackage--IEEELibrary

--introduceentityENTITYyimaqi38ISPORT(

A,B,C,EN:INstd_logic;

--A,B,CisINPUTandENisshinengduan--shiti

Y:OUTstd_logic_vector(7downto0));ENDENTITY;

-----------------------------------------------------------describearchitecture

ARCHITECTUREyimaqi38_archOFyimaqi38ISSIGNALABC:std_logic_vector(2downto0);BEGIN

ABC<=A&B&C;PROCESS(ABC,EN)BEGIN

IF(EN='0')THEN--whenENislow,ABCisvalidinputcaseABCis

when\"111\"=>Y<=\"11111110\";--0when\"110\"=>Y<=\"11111101\";--1when\"101\"=>Y<=\"11111011\";--2when\"100\"=>Y<=\"11110111\";--3when\"011\"=>Y<=\"11101111\";--4when\"010\"=>Y<=\"11011111\";--5when\"001\"=>Y<=\"10111111\";--6when\"000\"=>Y<=\"01111111\";--7whenothers=>Y<=\"XXXXXXXX\";endcase;ELSE

Y<=\"11111111\";ENDIF;

4

--structure

ENDPROCESS;ENDARCHITECTURE;

---------------------------------------------------------

1.4仿真结果

实体电路如下图:

图2译码器实体电路图

仿真波形如下图:

图33-8译码器仿真结果

2分频器实验2.1设计要求

1)将EDA板上的系统时钟50MHz分频为1Hz的时钟信号2)占空比为50%

3)利用流水灯点亮程序,在EDA板上观察效果4)实体命名为clkdiv_(班级号)_(班级序号)

2.2设计思路

设计分频器模块,其中分频采用计数器实现,它的输入输出框架见图4。

5

图4分频器输入输出框架

分频器控制流水灯的整体框架见图5。

图5分频器控制流水灯框架

2.3VHDL描述

用QuartusII9.0设计分频器,代码如下:-----------------------------------------------------------VHDLexperience2--FENPINQI

--DIV50MHzinto1Hz

--QuartusIIversion:QuartusII9.0--ChenYirong--2017.11.24

-----------------------------------------------------------includelibraryLIBRARYIEEE;--includepackage

USEIEEE.std_logic_1164.ALL;USEIEEE.std_logic_unsigned.all;

-----------------------------------------------------------introduceentity

6

--usepackage--IEEELibrary

ENTITYclkdiv_15dianzhuo_12is--changentochangefrequence

--shiti

GENERIC(n:integer:=50000000);--leishucanshuPORT(clk:INstd_logic;

Y:OUTstd_logic);

ENDENTITY;

-----------------------------------------------------------describearchitecture

ARCHITECTUREbehavOFclkdiv_15dianzhuo_12IS--structureSIGNALcount:integerRANGEn-1DOWNTO0:=n-1;--COUNTERBEGIN

PROCESS(clk)BEGIN

IF(rising_edge(clk))thencount<=count-1;--dijianif(count>=n/2)then

Y<='0';else

Y<='1';endif;

if(count<=0)then

count<=n-1;endif;ENDIF;ENDPROCESS;ENDbehav;

---------------------------------------------------------用QuartusII9.0设计流水灯电路模块,代码如下:-----------------------------------------------------------VHDLexperience2

7

--fenpin

--LIUSHUIDENG

--SHIXIANLIUSHUIDENGGONGNENG--QuartusIIversion:QuartusII9.0--ChenYirong--2017.11.24

-----------------------------------------------------------includelibraryLIBRARYIEEE;--includepackage

USEIEEE.std_logic_1164.ALL;USEIEEE.std_logic_unsigned.all;

-----------------------------------------------------------introduceentityENTITYliushuidengis

--shiti

--usepackage--IEEELibrary

PORT(clk,rst_n:INstd_logic;

LED_OUT:OUTstd_logic_vector(7DOWNTO0));ENDENTITY;

-----------------------------------------------------------describearchitecture

ARCHITECTUREbehavOFliushuidengIS--structureSIGNALlight:std_logic_vector(7DOWNTO0);--COUNTERBEGIN

PROCESS(clk,rst_n)BEGIN

IF(rst_n='0')thenlight<=\"00000000\";

--jiangeliang

ELSIF(rising_edge(clk))then

if(light=\"11111111\")then--ruguoquanmielight<=\"11111110\";

8

else

if(light=\"01111111\")then

light<=\"11111110\";else

light<=light(6DOWNTO0)&'1';endif;endif;

ENDIF;ENDPROCESS;LED_OUT<=light;ENDbehav;

---------------------------------------------------------

2.4仿真结果

实体电路如下图:

(a)分频器模块

完整的电路图如下图所示。

(b)流水灯模块

图6分频器和流水灯实体电路图

图7分频器控制流水灯电路图

9

分频器的仿真结果如下图:

图8分频器仿真结果

由于n=50000000,无法在QuartusII9.0的仿真器中看到流水灯的效果,我修改类属参数为n=5,重新进行仿真,得到图

9所示的波形。可以观察

LED_OUT[0]~LED_OUT[7],波形出现阶梯状的低电平,说明实现了流水灯效果,通过修改n值大小就可以实现控制每一个通道输出的低电平的宽度。

图9n=5时的流水灯波形效果

三、实验设计原理13-8译码器原理

3-8译码器依据表3所示的逻辑关系进行译码。

表33-8译码器译码表

10

2分频器原理

对脉冲信号进行2的n次方分之一的分频,例如把32768HZ的脉冲信号变成1HZ的秒信号。这类分频器通常是利用T触发器实现,每来一个脉冲后触发器状态改变一次,经过n个T触发器处理后就可以得到2的n次方分之一的分频信号。下图表示用分频器原理实现二分频和四分频。clk二分频四分频

图10二分频和四分频示意图

四、实验过程记录(流程图或者实验逻辑思路过程)13-8译码器实验

实验流程如图10所示。

开始

设计3-8译

码器模块

编译3-8译码器模块搭建译码器仿真电路编译译码器仿真电路进行波形仿真

对端口分配管脚重新进行编译

下载程序到FPGA板

调试并进行实验拍照保存结果

结束

图11译码器实验流程图

1.1仿真过程

首先搭建仿真电路,见图12所示。

11

图12译码器实验仿真电路

建立仿真波形并进行仿真,仿真结果如下

图13译码器仿真结果

1.2下载验证过程

首先参考表2分配引脚。然后重新编译,编译成功后下载到FPGA模块中,见图14。

图14FPGA开发板模块

(2)实验结果

12

LED0到LED5对应Y[0]到Y[5],SW0对应EN,SW1、SW2、SW3对应A、B、C,其中按键按下代表低电平,实验时为了方便起见,修改代码,使得EN为高电平有效,A、B、C也为高电平有效,方便进行实验。其中,Y[0]到Y[7]分别表示Y的最低位和最高位。那个键被按下,就认为哪个键状态为1。

(a)输入为000,LED0发光(b)输入为001,LED1发光

(c)输入为010,LED2发光(d)输入为011,LED3发光

(e)输入为100,LED4发光

13

(f)输入为101,LED5发光

图15译码器实验结果

2分频器实验

实验流程如图14所示。

开始

设计分频器模块

编译分频器模块搭建流水灯仿真电路编译流水灯仿真电路进行波形仿真

对端口分配管脚重新进行编译

下载程序到FPGA板

调试并进行实验拍照保存结果

结束

图16分频器实验流程图

2.1仿真过程

首先搭建仿真电路,见图17。

图17分频器控制仿真电路

建立仿真波形并进行仿真,仿真结果如下

图18分频器仿真波形

由于n过大,无法看出分频效果,无法在QuartusII9.0的仿真器中看到流水灯的效果,我修改类属参数为n=5,重新进行仿真,得到如下波形。

14

图19分频器控制流水灯效果示意波形(n=5)

图19说明分频器实现正确的分频功能。

2.2下载验证过程

首先参考表2分配引脚。然后重新编译,编译成功后下载到FPGA模块中,见图14。实验获得的效果如图20所示。

(a)流水灯1(b)流水灯2(c)流水灯3(d)流水灯4

(e)流水灯5

(f)流水灯6(g)流水灯7

图20利用分频器实现流水灯实验结果

(h)按下RST键

五、实验结果和分析

通过仿真实验和下载验证实验,我实现了3-8译码器模块的VHDL实现,以及流水灯的VHDL实现。

细节分析:注意开关为按键开关,按下为低电平,否则分析实验结果时容易出错。

15

(实验报告作品相片粘贴页)

(工程软件比如电路图截图、仿真结果或者实验平台运行效果照片)

图21译码器实验仿真电路

图22译码器仿真结果

(f)输入为000,LED0发光(g)输入为001,LED1发光

16

(h)输入为010,LED2发光(i)输入为011,LED3发光

(j)输入为100,LED4发光(f)输入为101,LED5发光

图23译码器实验结果

图24分频器控制仿真电路

建立仿真波形并进行仿真,仿真结果如下

图25分频器仿真波形

由于n过大,无法看出分频效果,无法在QuartusII9.0的仿真器中看到流水灯的效果,我修改类属参数为n=5,重新进行仿真,得到如下波形。

17

图26分频器控制流水灯效果示意波形(n=5)

上图说明分频器实现正确的分频功能。

(h)流水灯1(i)流水灯2(j)流水灯3(k)流水灯4

(l)流水灯5

(m)流水灯6(n)流水灯7图27利用分频器实现流水灯实验结果

(h)按下RST键

图283-8译码器的RTL图

18

图29分频器的RTL图

图30流水灯RTL图

19

因篇幅问题不能全部显示,请点此查看更多更全内容

Top