FPGA设计与应用 分频器设计实验

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

H a r b i n I n s t i t u t e o f T e c h n o l o g y

实验报告

课程名称: FPGA设计与应用

实验题目:分频器设计实验

院系:电子与信息工程学院班级: 1005104 姓名:原亚欣

学号: 1100500235 实验时间: 2013年11月

哈尔滨工业大学

分频器设计实验

一、实验目的

1、了解Quartus II软件的功能;

2、掌握Quartus II的HDL输入方法;

3、掌握Quartus II编译、综合、适配和时序仿真;

4、掌握Quartus II管脚分配、数据流下载方法;

5、了解设计的资源消耗情况;

6、掌握分频器和计数器的实现原理;

7、掌握数码管的静态和动态显示原理

二、实验准备

2.1 EP2C8的系统资源

逻辑单元8,256

M4K RAM 块(4k比特+512校验比特) 36

总的RAM比特数165,888

嵌入式乘法器18

锁相环PLLs 2

2.2 工程所用到的FPGA引脚及功能说明

node name direction location i/o bank VREF group

clk clkout seg7[0] seg7[1] seg7[2] seg7[3] seg7[4] Input

Output

Output

Output

Output

Output

Output

PIN_23

PIN_107

PIN_115

PIN_118

PIN_128

PIN_112

PIN_110

1

3

3

3

3

3

3

B1_N0

B3_N1

B3_N1

B3_N1

B3_N1

B3_N1

B3_N1

seg7[5]

seg7[6]

seg7_select[0] seg7_select[1] seg7_select[2] seg7_select[3] Output

Output

Output

Output

Output

Output

PIN_116

PIN_133

PIN_134

PIN_127

PIN_117

PIN_114

3

3

3

3

3

3

B3_N1

B3_N0

B3_N0

B3_N1

B3_N1

B3_N1

工程所用到的FPGA引脚及功能说明

PIN_23 是时钟引脚。

PIN_114 PIN_117 PIN_127 PIN_134是数码管的位选引脚。

PIN_133 PIN_116 PIN_110 PIN_112 PIN_128 PIN_118 PIN_115是数码管的段选信号引脚。

2.3 数码管的动态显示原理

动态显示是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于fpga对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

三、源代码及测试结果

3.1 分频器4连体数码管显示源代码及分析

Library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_unsigned.all;

Entity yyx_shiyan1 is

port ( yyx_clk : in std_logic;

yyx_clkout : out std_logic;

yyx_s7: out std_logic_vector( 6 downto 0 ); --7断码输出

yyx_s3: out std_logic_vector( 3 downto 0)); --4个数码管选通

end;

architecture one of yyx_shiyan1 is

signal yyx_L1,yyx_L2,yyx_L3,yyx_L4,yyx_L:integer; --L1,L2是前两个数码管表示分钟的高两位L3,L4是分钟的低两位

signal yyx_a:std_logic_vector(26 downto 0); --用作计数

signal yyx_q1:std_logic; --LED灯信号

signal yyx_b:std_logic_vector(12 downto 0); --用作计数

signal yyx_q2:std_logic; --数码管扫描信号

signal yyx_clkout1:std_logic; --数码管扫描信号的输出

signal yyx_c:std_logic_vector(1 downto 0):="00"; --用于数码管选通

--将时钟信号83333333分频得到频率为0.6Hz的输出信号要求占空比为75%

begin

process(yyx_clk)

begin

if yyx_clk'event and yyx_clk='1' then

if yyx_a<62500000 then

yyx_a<=yyx_a+1;

yyx_q1<='1';

elsif yyx_a<83333333 then

yyx_a<=yyx_a+1;

yyx_q1<='0';

else

yyx_a <= (others=>'0');

end if;

end if;

yyx_clkout<=yyx_q1;

end process;

--将时钟信号分频得到周期为1ms的信号作为数码管扫描信号

process(yyx_clk)

begin

if yyx_clk'event and yyx_clk='1' then

if yyx_b<250000 then

yyx_b<=yyx_b+1;

yyx_q2<=yyx_q2;

else

yyx_b <= (others=>'0');

yyx_q2<=not yyx_q2;

end if;

end if;

yyx_clkout1<=yyx_q2;

end process;

--进行计数,第一、三位模10计数,第二、四位模6计数

相关文档
最新文档