数字电路综合设计实验报告文档

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字电路综合设计课程报告
姓名:
学号:
班级:
20120530
目录
一. 设计题目............................................................................... 错误!未定义书签。

二.设计要求及技术指标.......................................................... 错误!未定义书签。

2.1实验目的 ...................................................................... 错误!未定义书签。

2.2 实验要求 ..................................................................... 错误!未定义书签。

2.3 实验原理 ..................................................................... 错误!未定义书签。

三.方案选择及总体设计........................................................ 错误!未定义书签。

3.1 方案选择 ..................................................................... 错误!未定义书签。

3.2 总体设计 ..................................................................... 错误!未定义书签。

3.2.1 信号生成......................................................... 错误!未定义书签。

3.2.2 分频................................................................. 错误!未定义书签。

3.2.3 信号计数编码................................................. 错误!未定义书签。

3.2.4 信号译码输出................................................. 错误!未定义书签。

3.3 功能描述 ..................................................................... 错误!未定义书签。

3.4 总体结构框图 ............................................................. 错误!未定义书签。

四. 硬件介绍............................................................................... 错误!未定义书签。

五. 软件设计............................................................................... 错误!未定义书签。

5.1 基本思路 ..................................................................... 错误!未定义书签。

5.2 程序框图 ..................................................................... 错误!未定义书签。

5.3 子程序设计(代码)及仿真波形及分析 ................. 错误!未定义书签。

5.3.1 分频器............................................................. 错误!未定义书签。

5.3.2 计数器............................................................. 错误!未定义书签。

5.3.3 译码器............................................................. 错误!未定义书签。

5.4 主程序设计及仿真波形及分析 ................................. 错误!未定义书签。

六. 调试及相关说明................................................................... 错误!未定义书签。

七. 结束语................................................................................... 错误!未定义书签。

一. 设计题目
基于Quartus II的流水灯设计仿真
二.设计要求及技术指标
2.1实验目的
通过本次实验,引导学生以计算机辅助设计的手段来设计数字逻辑电路;
掌握QuartusII集成开发环境软件原理图输入的设计流程;
掌握简单流水灯的工作原理,学会通过QuartusII建立原理图设计小型数字电路;
掌握可编程逻辑器件(PLD)的开发步骤;
掌握对设计进行编译、仿真的方法。

流水灯工作效果如下:
2.2 实验要求
用逻辑电路控制8个LED灯,始终保持1亮7暗,亮灯从左到右,在脉冲信号CP的推动下循环流动。

2.3 实验原理
利用信号生成器生成固定频率信号,降低频率后对信号累计编码,对累计编码的信号译码后送给LED灯显示。

三.方案选择及总体设计
3.1 方案选择
使用QuartusII6.0设计系统,应用VHDL语言编程构造所需器件,需要的器件有分频器、计数器、译码器,组装好后,编译仿真,锁定引脚下载到开发板。

3.2 总体设计
分为三个大的模块,分别为分频器、计数器、译码器。

使用分频器将晶振送来的高频信号转化为低频,用计数器记录时钟周期产生三位的二进制码,使用3-8线译码器输出高电平有效的信号,从而控制LED灯。

3.2.1 信号生成
使用开发板自带的晶振产生原始信号,但是频率较高需要降低频率(分频)。

3.2.2 分频
使用一个较淡的分频逻辑器件分频,原理为输入信号多个周期产生一个输出周期。

3.2.3 信号计数编码
对于分频后的信号,并不能直接用于控制LED灯,需要技术产生二进制代码,译码后控制LED灯。

计数器可以对输入信号累加计数,由于最后的LED灯数目为8个,23=8,故需要产生3位的二进制码,范围从000到111。

3.2.4 信号译码输出
经过编码的信号从000到111依次循环,可利用3-8线译码器,产生译码输出信号,又由于要求的是有一个灯亮,故输出信号选为高电平有效。

输入与输出信号对应关系如下表:
输入信号输出信号
000 00000001
001 00000010
010 ********
011 00001000
100 00010000
101 00100000
110 01000000
111 10000000
3.3 功能描述
8个LED灯,有一个灯亮着从左到右,一轮过后再次循环,其他灯则灭。

3.4 总体结构框图
四. 硬件介绍
计算机、开发板、开发板上面的芯片为MAXII系列的EPM240T100C5。

五. 软件设计
5.1 基本思路
利用分频器对晶振产生的信号进行分频使频率降低,计数器对信号累加,产生三位的信号(从000到111),再利用三八线译码器对计数器产生的信号译码,产生高电平有效地信号(从00000001到10000000),将引脚锁定,下载到开发板。

5.2 程序框图
从左到右依次为:晶振信号输入、分频器、计数器、译码器、LED 灯输出。

5.3 子程序设计(代码)及仿真波形及分析
5.3.1 分频器
代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity divide is
port(clk:in std_logic;
cp:out std_logic);
end;
architecture divide of divide is
signal clock:std_logic;
begin
cp<=clock;
process(clk,clock) is
variable count:integer range 0 to 999999;
begin
if(clk'event and clk='1')then
if(count=999999) then
clock<=not clock;
count:=0;
else
count:=count+1;
end if;
end if;
end process;
end divide;
仿真:
为了在仿真中便于观察,将分频周期中999999改为6,将divide.vhd设为顶层文件,编译,新建一个波形文件,将端口导入,选择“功能仿真”、新建网表,为输入指定值,仿真后波形图如下:
分析:
由仿真可以看出,输出信号的频率明显减低,若将分频数值设置
得更大,效果将更加明显,说明本代码可以用于系统使用。

5.3.2 计数器
代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity counter is
port(clk:in std_logic;
outp:out std_logic_vector(2 downto 0));
end;
architecture counter of counter is
signal s1:std_logic_vector(2 downto 0);
begin
process(clk) is
begin
if(clk='1' and clk'event)then
s1<=s1+'1';
end if;
end process;
outp<=s1;
end counter;
仿真:
将counter.vhd设为顶层文件,编译,新建一个波形文件,将端口导入,选择“功能仿真”、新建网表,为输入指定值,仿真后波形图如下:
分析:
有仿真结果可以看出,对应于输入信号的每一个周期,输出都会改变,而且这种改变是有规律的,从000到111,符合了设计的要求,完全可以应用到系统设计之中。

5.3.3 译码器
代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity decoder is
port(inp:in std_logic_vector(2 downto 0);
outp:out std_logic_vector(7 downto 0));
end;
architecture decoder of decoder is
begin
process(inp) is
begin
case inp is
when "000"=>outp<="00000001";
when "001"=>outp<="00000010";
when "010"=>outp<="00000100";
when "011"=>outp<="00001000";
when "100"=>outp<="00010000";
when "101"=>outp<="00100000";
when "110"=>outp<="01000000";
when "111"=>outp<="10000000";
end case;
end process;
end decoder;
5.4 主程序设计及仿真波形及分析
将前面的VHDL代码生成器件,依照数据处理顺序组装成为如下的电路图:
从左到右依次为晶振信号,分频器,计数器,译码器,LED灯输出。

对总电路图编译后仿真如下图:
可看出系统总体符合要求,8个LED灯依次亮灭。

六. 调试及相关说明
将输入信号输出信号与引脚绑定,下载到开发板观看效果。

类型引脚名绑定引脚编号
输入clk 12
输出Out[7] 86
Out[6] 87
Out[5] 88
Out[4] 89
Out[3] 90
Out[2] 91
Out[1] 92
Out[0] 95
绑定后如图:
绑定后再次编译Design.bdf文件,效果如图:
七. 结束语
在此次课程设计过程中,学会了QuartusII软件的使用,在QuartusII中创建项目、新建文件、编译文件、对设计进行仿真以及对编译好的内容进行下载到开发板上观察效果。

在整个过程中,编译使用VHDL代码编写的逻辑器件的代码时,需要将该文件设置为工程的顶层文件,否则后面的仿真出错。

在由逻辑器件组装好电路图时,需要将组装好的电路图文件设为顶层文件再编译,否则后面出错。

在下载到开发板之前,需要锁定引脚,之后还需要编译一次,否则会出错。

这些都是在开发设计过程中总结出的经验。

在设计过程中加深了对可编程逻辑器件的使用的理解,克服了一些困难,学到了一些以前没有学到的知识。

相关文档
最新文档