搜档网
当前位置:搜档网 › FPGA设计方案

FPGA设计方案

FPGA设计方案
FPGA设计方案

FPGA课程设计

题目:全天候温度纪录仪的设计与FPGA实现

姓名:

学号:

院系:信息科学与工程学院

专业:计算机技术

摘要

本设计有效的克服了传统的数字温度计的缺点,采用自上而下的设计思路,绘制出了系统结构流程图,最后又在硬件上通过对其进行调试和验证。基于FPGA在Quartus II13.0软件下应用Verilog HDL语言编写程序,采用ALTRA公司Cyclone- IV系列的EP4CE40F23I7 芯片进行了计算机仿真,并给出了相应的仿真结果。该电路能够实现很好的测温功能。

关键字:数字温度计;FPGA;Quartus II130.;Verilog HDL;EP4CE40F2317

Abstract

This design effectively overcomes the traditional digital thermometer’s wea knesses and takes a top-down approach to design flow chart of system, and fi nally pass the circuits to the hardware to debug and verify it. This design is b ased on FPGA using Verilog HDL language to write program in Quartus II sof tware, adopting EP4CE40F23I7 chip of Cyclone- IV series of ALTRA company for computer simulation and at the same time showing the corresponding sim ulation result. This circuit is able to carry out excellent temperature- measurem ent function.

KeyWords:Digital thermometer;FPGA;Quartus II 13.0;Verilog HDL ;EP4CE40F2317

目录

一、设计要求 (1)

1.1 设计题目 (1)

1.2 选题背景 (1)

1.3 设计要求: (1)

二、系统设计 (2)

2.1 系统设计图 (2)

2.2 系统设计说明 (2)

三、硬件设计 (2)

3.1 FPGA简介 (3)

3.2 LCD1602液晶显示 (5)

3.3 DS18B20温度传感器 (7)

3.4 AT24C02读写模块 (9)

3.5 按键模块设计 (10)

四、软件设计 (11)

4.1 Quartus II软件介绍 (11)

4.2 系统架构图 (12)

4.3 系统控制器 (12)

4.4 系统调试 (13)

五、代码附录 (13)

5.1 顶层模块 (13)

5.2 LCD驱动部分代码 (15)

5.3 DS18B20驱动模块 (17)

全天候温度纪录仪的设计与FPGA实现

一、设计相关

1.1 设计题目

全天候温度纪录仪的设计与FPGA实现

1.2选题背景

当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。它与传统的电子产品在设计上的显著区别是大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期。FPGA开发技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术。基于Verilog HDL语言的设计开发更是灵活多变,容易上手,方便开发人员开发新产品。

时代在发展,人们的物质生活水平在不断提高,新产品、新技术层出不穷,电子技术的发展更是日新月异。可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。一个方便实用的温度计对于大众来说更是生活中不可或缺的一件产品。

美国ALTERA公司的可编程逻辑器件采用全新的结构和先进的技术,加上最新的QUARTUS开发环境,更具有高性能,开发周期短等特点,十分方便进行电子产品的开发和设计本节将从FPGA嵌入式应用开发技术与温度计发展的客观实际出发,通过对该技术发展状况的了解,以及课题本身的需要,指出研究基于FPGA的芯片系统与设计——全天候温度记录仪的设计与实现的必要性。

1.3 设计要求

本设计要求设计一个温度计,通过温度传感器(DS18B20)周期的测量温度数据,同时将数据存储在EEPROM AT24C02中,在需要读取数据温度纪录时,

读出温度纪录至板载LCD(1602)液晶显示器显示。

二、系统设计

2.1 系统设计图

图2-1 系统设计图

2.2 系统设计说明

本设计是基于FPGA的温度记录仪,整体系统设计如下,首先由FPGA控制器驱动DS18B02温度传感器对当前温度进行周期性采集,并且对采集到的数据进行处理,然后存入EEPROM AT24C02只读存储器,最后利用LCD1602液晶显示屏进行显示。同时本系统通过向用户提供按键,方便用户读取历史温度记录。

三、硬件设计

3.1FPGA简介

3.1 1 FPGA芯片的介绍

FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称,与之相应的CPLD是复杂可编程逻辑器件(Complex Programmable Logic Device)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件。

3.12 FPGA基本结构

FPGA具有可编程门阵列的通用结构,它由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。

FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM 组成。这3种可编程电路是:可编程逻辑模块、输入/输出模块(IOB--I/O Block)和互连资源。可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。

(1) CLB是FPGA的主要组成部分。图3-1是CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G’、F’和H’。G有4个输入变量G1、G2、G3和G4;F也有4个输入变量F1、F2、F3和F4。这两个函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数。逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G’和F’,而另一个输入信号是来自信号变换电路的输出H1。这个函数发生器能实现3输入变量的各种组合函数。这3个函数发生器结合起来,可实现多达9变量的逻辑函数。

CLB中有许多不同规格的数据选择器(四选一、二选一等),通过对CLB 内部数据选择器的编程,逻辑函数发生器G、F和H的输出可以连接到CLB输出端X或Y,并用来选择触发器的激励输入信号、时钟有效边沿、时钟使能信号以及输出信号。这些数据选择器的地址控制信号均由编程信息提供,从而实现所

需的电路结构。

CLB中的逻辑函数发生器F和G均为查找表结构,其工作原理类似于ROM。F和G的输入等效于ROM的地址码,通过查找ROM中的地址表可以得到相应的组合逻辑函数输出。另一方面,逻辑函数发生器F和G还可以作为器件内高速RAM或小的可读写存储器使用,它由信号变换电路控制。

(2) 输入/输出模块IOB。IOB提供了器件引脚和内部逻辑阵列之间的连接。它主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成。

每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先送入输入缓冲器。缓冲器的输出分成两路:一路可以直接送到MUX,另一路经延时几纳秒(或者不延时)送到输入通路D触发器,再送到数据选择器。通过编程给数据选择器不同的控制信息,确定送至CLB阵列的I1和I2是来自输入缓冲器,还是来自触发器。

图3-1CLB基本结构

当IOB控制的引脚被定义为输出时,CLB阵列的输出信号OUT也可以有两条传输途径:一条是直接经MUX送至输出缓冲器,另一条是先存入输出通路D 触发器,再送至输出缓冲器。

IOB输出端配有两只MOS管,它们的栅极均可编程,使MOS管导通或截止,分别经上拉电阻接通VCC、地线或者不接通,用以改善输出波形和负载能力。

(3) 可编程互连资源IR。可编程互连资源IR可以将FPGA内部的CLB和CLB之间、CLB和IOB之间连接起来,构成各种具有复杂功能的系统。IR主要由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电

路的连接。

3.13 FPGA一般设计流程

图3-2 FPGA设计流程图3.2 LCD1602液晶显示

3.21 LCD 1602实物显示:

图3-3 LCD1602实物图

3.22功能:用来显示当前的温度值,和显示查询的温度值。

3.23接口信号说明:

表3-1 接口信号表

3.24 时序图

图3-4 时序图

3.25 LCD 1602指令

1)0X38设置为16*2显示,5*7点阵,8位数据接口

2)0X0C说明这里0C表示的是开显示,不显示光标,光标不显示,完整

描述如下:

指令码:00001DBC

D=1 开显示D=0 关显示C=1 显示光标C=0 不显示光标

B=1 光标闪烁B=0 光标不闪烁

3.3 DS18B20温度传感器

3.31 DS18B20实物图

图3-5 DS 18B20 实物图

3.32 功能:采集当前周围温度信息值。

3.33 DS18B20接口引脚信息

表3-2 接口引脚图

3.34 DS18B20的读写操作

图3-6 写操作

写时隙分为写"0"和写"1",时序如图,在写数据时间间隙的前15us总线需要是被控制器拉置低电平,而后则将是芯片对总线数据的采样时间,采样时间在15-60us,采样时间内如果控制器将总线拉高则表示写1,如果控制器将总线拉低则表示写0。每一位的发送都应该有一个至少15us的低电平起始位随后的数据0或1应该在45us内完成。整个位的发送时间应该保持在60-120us,否则不能保证通信的正常。

3.35 DS18B20的读操作

图3-7 读操作

读时隙时也是必须先由主机产生至少1us的低电平,表示读时间的起始。随后在总线被释放后的15us中DS18B20会发送内部数据位。注意必须要在读间隙开始的15us内读数据为才可以保持通信的正确。通信时,字节的读或写是从高位开始的,即A7到A0。控制器释放总线,也相当于将总线置1。

3.4 AT24C02读写模块

3.41 IIC 总线协议简介

IIC 总线是一种由PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。IIC总线是由数据线SDA 和时钟SCL 构成的串行总线,可发送和接收数据。在CPU 与被控IC 之间、IC 与IC 之间进行双向传送,最高传送速率100kbps。

IIC 总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。

开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据;

结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据;

应答信号:接收数据的IC 在接收到8bit 数据后,向发送数据的IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收

到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

3.42 AT24C02简介

AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8 位字节,该器件通过IIC 总线接口进行操作。通过器件地址输入端A0、A1和A2 可以实现将最多8个AT24C02器件连接到IIC 总线上。

AT24C02的存储容量为2KB,内容分成32页,每页8B,共256B,操作时有两种寻址方式:芯片寻址和片内子地址寻址。

芯片寻址:AT24C02的芯片地址为1010,其地址控制字格式为1010A2A1A0R/W。其中A2,A1,A0 可编程地址选择位。A2,A1,A0 引脚接高、低电平后得到确定的三位编码,与1010 形成7 位编码,即为该器件的地址码。R/W 为芯片读写控制位,该位为0,表示芯片进行写操作。

片内子地址寻址:芯片寻址可对内部256B 中的任一个进行读/写操作,其寻址范围为00~FF,共256 个寻址单位。

对AT24C02 的基本操作有字节写,连续读。操作时序如下:

图3-8 字节写

图3-9 连续读

3.43 模块驱动方案:

在主模块里例化了3个子模块,简单说一下各个模块的功能:

串口发送模块:负责将FPGA 通过IIC 接口读取AT24C02 的数据通过串口发送给PC,这样我们就可以通过串口调试助手查看读到的数据与写入的数据是否一致来调试。

IIC 控制命令产生模块:负责发送控制命令如连续读、随机读、字节写及页写等给IIC 发送与接收模块,该模块不与AT24C02 直接打交道。

IIC 发送与接收模块:根据接收到IIC 控制命令产生模块发送的控制命令来操作AT24C02,该模块与AT24C02 直接打交道。

3.5 按键模块设计

K1复位键:按下复位键所有模块进入复位状态。E2PROM AT24C02不清零。

K2 上翻页:查询上一个计数周期的采集值。

K3 下翻页:查询下一个计数周期的采集值。

以下是按键和复位电路图

图3-10 按键图图3-11 复位图

四、软件设计

4.1 Quartus II软件介绍

Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。软件界面如图:

图4-1 软件界面图

4.2 系统架构图

图4-2系统架构图

4.3 系统控制器

4.31作用

主要负责各个模块复位与启动,数据采集与处理以及任务调度等工作。当出现复位信号时,所有模块进入复位状态,但AT24C02不清零。针对AT24C02的数据可以采用上翻页和下翻页组合按键,同时按下进行清零。

4.32 实现方法

(1)、做出各模块驱动(部分代码见‘代码附录’)。

(2)、制作计数器

当产生周期性信号时,控制器读取DS18B20数据,在控制器内部进行处理,将处理完的结果送入E2PROM进行存储,同时送入LCD1602进行显示。

当按键信号出现时,分为以下两种。

1、复位信号,上面已经解释,不再赘述;

2、K2和K3单个出现信号,若没有周期信号,直接读取E2PROM数据,

送入LCD 1602显示;若有周期信号,进行等待,固定等待1S,重复上述工作3、当K2或K3同时按下时,无需判断周期性信号,直接清零。

控制器向ROM发送操作指令,进行温度转换,读写操作,周期性数据采集使用计数器产生周期性采集信号,具体周期时间暂定为5分钟。

4.4 系统调试

在系统调试时,我们使用的是Altera公司的Cyclone IV EP4CE40F23I7。在本系统中用到复位电路、电源电路、时钟电路、JTAG下载电路、DS18B20传感器电路、1602LCD液晶显示屏和AT24C02存储器等主要电路。

具体的硬件调试过程中,有很多细节时要注意,首先插上JTAG下载线,然后打开系统的电源。因为系统的时钟频率直接影响本设计的各个模块的正常运行,所以一定要把时钟选正确。

做好准备工作以后,系统上电,使用Quartus II选取EP4CE40F23I7型的FPGA器件,进行编译。编译之后,将综合生成的配置文件使用JTAG下载到开发板上。然后进行实物验证:上电后,各个模块正常工作,LCD1602显示温度值,五分钟更新一次。按下K1键各个模块复位,此时AT24C02不清零,K2和K3同时按下模块复位和AT24C02清零。与预期基本相同,符合题目要求。

五、代码附录

5.1 顶层模块

module Temperate(

CLK,

RST_n,

K1,

K2,

K3,

LCD_DATA,

LCD_RW,

LCD_RS,

LCD_EN,

LCD_B,

one_wire;

Tem,

SCL,

SDA,

LED,

TXD

)

input CLK;

input RST_n;

input K1;

input K2;

input K3;

output [7:0]LCD_DATA;

output LCD_RW;

output LCD_RS;

output LCD_EN;

output LCD_B;

reg [7:0]LCD_DATA;

reg LCD_RW;

reg LCD_RS;

reg LCD_EN;

inout one_wire;

output [15:0]Tem;

inout SDA;

output SCL;

output LED;

output TXD;

assign LCD_B=1;

LCD1602 U0(

.CLK(CLK),

.RST_n(RST_n),

.LCD_RW(LCD_RW),

.LCD_RS(LCD_RS),

.LCD_EN(LCD_EN),

.LCD_B(LCD_B),

.LCD_DATA(LCD_DATA)

);

DS18B20 U1(

.CLK(CLK),

.RST_n(RST_n),

.Tem(Tem)

);

wire [7:0]wr_data;

wire [7:0]wr_rd_addr;

wire [7:0]data_out;

AT24C02_Ctrl U2(

.CLK50M(CLK),

.RST_n(RST_n),

.SDA(SDA),

.SCL(SCL),

.LED(LED),

.TXD(TXD)

);

endmodule

5.2 LCD驱动部分代码

module lcm(CLOCK_50, LCD_DATA, LCD_RW, LCD_RS, LCD_EN,LCD_BLON );

input CLOCK_50;

output [7:0]LCD_DATA;

output LCD_RW;

output LCD_RS;

output LCD_EN;

output LCD_BLON;

reg [7:0]LCD_DATA;

reg LCD_RW ;

reg LCD_RS;

reg LCD_EN;

reg clk_1k=1'b0;

reg [20:0]counter=0;

reg [10:0]counter1=0;

assign LCD_BLON=1;

always@(posedge CLOCK_50)

if(counter==25000)

begin

clk_1k<=~clk_1k;

counter<=0;

end

else counter<=counter+1;

always@(posedge clk_1k)//

begin

if(counter1<1023)

counter1<=counter1+1;

casex (counter1)

400:begin

LCD_DATA<=8'b00111000; //0x38 设置显示模式

LCD_RW<=1'b0;

LCD_RS<=1'b0;

end

401:LCD_EN<=1'b1;

410: //0x0c 开显示关光标

begin

LCD_DATA<=8'b00001100;

LCD_RW<=1'b0;

LCD_RS<=1'b0;

end

411: LCD_EN<=1'b1;

420: begin //0x01 清屏幕

LCD_DATA<=8'b00000001;

LCD_RW<=1'b0;

LCD_RS<=1'b0;

end

421: LCD_EN<=1'b1;

430: begin //0x06 读或者写后自动加1 LCD_DATA<=8'b00000110;

LCD_RW<=1'b0;

LCD_RS<=1'b0;

end

431: LCD_EN<=1'b1;

440:begin //0xc0 定位到第二行

LCD_DATA<=8'b11000000;

LCD_RW<=1'b0;

LCD_RS<=1'b0;

end

441: begin

LCD_EN<=1'b1;

ack<=1;

end

………………//根据数字的ASCII码值显示数据

………………

631: LCD_EN<=1'b1;

default: LCD_EN<=1'b0;

endcase

end

endmodule

5.3 DS18B20驱动模块

module Temperature(

input clk, // 50MHz时钟

input rst_n, // 异步复位

inout one_wire, // One-Wire总线

output [15:0] temperature // 输出温度值

);

reg rst_n;

reg [19:0]count;

always@(posedge clk)

begin

if(count<20'h80000)

begin

rst_n<=1;

count<=count+1;

end

else if(count<20'h8ffff)

begin

rst_n<=0;

count<=count+1;

end

else

rst_n<=1;

end

//++++++++++++++++++++++++++++++++++++++

// 分频器50MHz->1MHz 开始

//++++++++++++++++++++++++++++++++++++++

…………

//--------------此处省略分频部分的代码-------------

…………

// 分频器50MHz->1MHz 结束

//--------------------------------------

//延时模块的使用

//++++++++++++++++++++++++++++++++++++++

// 延时模块开始

//++++++++++++++++++++++++++++++++++++++

reg [19:0] cnt_1us; // 1us延时计数子

reg cnt_1us_clear; // 请1us延时计数子always @ (posedge clk_1us)

if (cnt_1us_clear)

cnt_1us <= 0;

else

fpga数字钟课程设计报告

f p g a数字钟课程设计报告 Prepared on 24 November 2020

课程设计报告 设计题目:基于FPGA的数字钟设计 班级:电子信息工程1301 姓名:王一丁 指导教师:李世平 设计时间:2016年1月 摘要 EDA(Electronic Design Automation)电子设计自动化,是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成软件方式设计得电子系统到硬件系统,最终形成集成电子系统或专用集成芯片。本次课程设计利用Quartus II 为设计软件,VHDL为硬件描述语言,结合所学知识设计一个多功能时钟,具有显示年、月、日、时、分、秒显示,计时,整点报时,设定时间等功能。利用硬件描述语言VHDL 对设计系统的各个子模块进行逻辑描述,采用模块化的思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑综合优化、逻辑仿真、最终完成本次课程设计的任务。 关键词:EDA VHDL语言数字钟 目录 摘要 1 课程设计目的 2 课程设计内容及要求

设计任务 设计要求 3 VHDL程序设计 方案论证 系统结构框图 设计思路与方法 状态控制模块 时分秒模块 年月日模块 显示模块 扬声器与闹钟模块 RTL整体电路 4 系统仿真与分析 5 课程设计总结,包括.收获、体会和建议 6 参考文献 1 课程设计目的 (1)通过设计数字钟熟练掌握EDA软件(QUARTUS II)的使用方法,熟练进行设计、编译,为以后实际工程问题打下设计基础。 (2)熟悉VHDL 硬件描述语言,提升分析、寻找和排除电子设计中常见故障的能力。 (3)通过课程设计,锻炼书写有理论根据的、实事求是的、文理通顺的课程设计报告。

FPGA设计的报告课程设计

FPGA课程设计 实 验 报 告

实验一:设计一个可控的100进制可逆计数器 一、实验要求 用DE2-115开发板下载。 (1)计数器的时钟输入信号周期为200ns。 (2)以十进制形式显示。 (3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用 clr plus minus 功能 0 ××复位为0 1 1 0 递增计数 1 0 1 递减计数 1 1 1 暂停计数 二、关键词 可控制、可逆、100进制、复位、暂停、递增、递减 三、内容摘要 module updown_count(qout,reset,clk,plus,minus); output[7:0] qout;/*定义一个8位的输出,其目的是 低四位和高四位分别表示计数器的个位和十位。*/ input clk,plus,minus,reset;//定义四个输入,时钟,加计数,减计数和清零 reg[7:0] qout;//qout的数据类型为寄存器型 always @(posedge clk)//当clk上升沿到来时执行一遍下列程序 begin if(!reset) qout<=0;//当reset为低电平时,计数器执行清零功能,否则跳过else begin case({minus,plus})//case语句模块,包含加,减和暂停四个模块 2'b10: if (qout[3:0]==0)//判断个位是否为零,若不为零,跳到个位减一begin qout[3:0]<=9;//给个位赋值 if(qout[7:4]==0) qout[7:4]<=9;//判断十位是否为零,并且给十位赋值 else qout[7:4]<=qout[7:4]-1;//由于个位赋9,相当于向十位借一,因而十位减一end else qout[3:0]<=qout[3:0]-1;//个位减一 /*这一部分是减计数模块,其思路是:首先判断个位是否为零,若为零,则执行后面的程序,个位直接赋9,并且十位减一;否则个位减一*/ 2'b01: if (qout[3:0]==9)//判断个位是否为9,否则跳到个位加一begin

FPGA课程设计报告

F P G A 课 程 设 计 报 告 学部:信息科学与技术学部 专业:通信工程 班级:10级1班 学号:100103011125 姓名:万洁 指导老师:祝宏 合作伙伴:张紫君 2012.12.13

一.《任务书》: 实验一100进制的可逆计数器(11——12周)实验二交通灯控制系统(15周) 实验三多功能数字钟系统(14-15周)二.实验书写格式: 一:题目要求 二:程序代码 三:操作步骤及运行结果截图 四:心得体会 三.实验附录: 一:老师提供的资源 二:关于实验所用EP4CE115F29板的简介

实验一100进制的可逆计数器 一、设计一个可控的100进制可逆计数器,要求用实验箱下载。 (1)计数器的时钟输入信号周期为200ns。 (2)以十进制形式显示。 (3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用下,计数器具有复位、增或减计数、暂停功能。 clr plus minus 功能 0 ××复位为0 1 1 0 递增计数 1 0 1 递减计数 1 1 1 暂停计数 二、程序如下: module keni100(CLR,CLK,PLUS,MINUS,OUT); //100进制的可逆计数器 input CLR,PLUS,MINUS,CLK; output [7:0]OUT; reg [7:0]OUT; always@(posedge CLK) begin if(!CLR) //如果CLR为零,输出为零;反之,运行else程序 OUT[7:0]<=0; else

begin if(PLUS==0 && MINUS==1) //100进制的递减计数 begin if (OUT[3:0]==0) begin OUT[3:0]<=9; if (OUT[7:4]==0) OUT[7:4]<=9; else OUT[7:4]<=OUT[7:4]-1; end else OUT[3:0]<=OUT[3:0]-1; end if(PLUS==1 && MINUS==0) //100进制的递增计数 begin if (OUT[3:0]==9) begin OUT[3:0]<=0; if (OUT[7:4]==9) OUT[7:4]<=0; else OUT[7:4]<=OUT[7:4]+1; end else OUT[3:0]<=OUT[3:0]+1; end if(PLUS==1 && MINUS==1) OUT<=OUT; //若PLUS和MINUS都为1,暂停计数 if(PLUS==0 && MINUS==0) OUT<=0; //若都为零,输出为零end end endmodule 三、运行程序 1、在quarters II9.1输入程序 打开quarters II界面,点击file→New,在出现的对话框,如图1.1所示,选择Text File,点击OK.

基于FPGA的VGA显示设计报告

正文 一,VGA时序标准 VGA是一种常用的显示输出接口,采用行场扫描控制结合RGB三色合成原理,输出 显示信号。每个VGA接口为15针接口,分三行排布,每行5针。如图所示: 图1.1 VGA接口 15针并未全部使用,有效的信号线共5根,即红绿蓝三基色信号线:R,G,B,每线电压从0V到0.71V变化,表示无色到饱和,依据电平高低,显示颜色的饱和程度。行同步控制信号,Hsync,控制每行扫描像素的有效和失效。场同步:Vsync,控制场方向,即整个图像显示过程的时间长度,场同步中的显示部分的时间长度,等于每行扫描时间的总和。 在不同刷新频率下,显示每个像素的时间是不同的,相同刷新频率下,每个像素显示时间是固定的,所以,不同的每个像素写入时间,导致了分辨率的不同。因为VGA的显示是逐行扫描,每行从左到右扫描,到了行尾,回归到下一行的行头,继续向尾部扫描。所以,显示原理是逐次写入每行的像素数据,直到整幅图像显示成功为止。 VGA显示的数据是不能锁存的,所以必须一次又一次的连续输入数据,72Hz的刷新率下,一秒钟显示72幅图像,所以,需要连续写入72幅图像,才能达到一秒的显示效果。所以,VGA显示图像,要反反复复写入图像数据,才能得到持续的显示效果。 图1.2 VGA接口线序 VGA显示,无法做到类似于TFT液晶屏的定点写入,VGA是扫描式暂时显示,所以时序显得尤为重要,时序出现失误,图像会出现走形,无法达到准确效果。而显示的时序控制主要依靠两条数据通道:行同步和场同步,即Hsync和Vsync,其控制了扫描显示的起点和终点,同时控制扫描起点的时间,通过时间的控制,达到确定的显示效果。 具体的控制时序图如下:

FPGA课程设计报告

2014年FPGA课程设计 课程设计报告 课程名称:FPGA课程设计 实验名称:直接数字合成器设计 姓名:李思彧 学号: 20114690 班级:电子科11-1 班 指导教师:倪伟 合肥工业大学电子科学与应用物理学院制

一、实验原理 直接数字式频率合成器(DDS)是将先进的数字处理理论与方法引入频率合成的一项新技术,DDS把一系列数字量形式的信号通过数/模转换器转换成模拟量形式的信号。DDS的具体工作过程是由N位相位累加器、N位加法器和N位累加寄存器组成。每来一个时钟脉冲,N位加法器将频率控制字K与N 位累加寄存器输出的累加相位数据相加,并把相加后的结果送至累加寄存器的输入端。累加寄存器一方面将上一时钟周期作用后所产生的新的相位数据反馈到加法器的输入端,使加法器在下一时钟的作用下继续与频率控制字K相加;另一方面将这个值作为取样地址送入幅度/相位转换电路,幅度/相位转换电路根据这个地址输出相应的波形数据。最后经D/A转换器和LPF将波形数据转换成所需要的模拟波形。 图1.直接数字式频率合成的基本框图 1 DDS的设计原理 DDS的原理图如图1所示。DDS实现频率合成主要是通过查表的方式进行的。正弦查询表是一个只读存储器(ROM),以相位为地址,存有1个或多个按0°~360°相位划分幅值的正弦波幅度信息。相位累加器对频率控制字进行累加运算,若需要还可以加入相位控制字,得到的结果作为正弦波查询表的地址。正弦查询表的输出为数字化正弦幅度值,通过D/A转换器转化为近似正弦波的阶梯波,

再通过低通滤波器滤除高频成分和噪声最终得到一个纯正度很高的正弦波。1.1 建模 正弦波y=sin(2πx),若以f量化的量化频率对其幅度值进行量化,一个周期可以得到M=f量化个幅度值。将这些幅度值按顺序存入到ROM。相位累加器在参考时钟的驱动下,每来1个脉冲,输出就会增加1个步长相位增量X,输出数据作为地址送入ROM中,读出对应的幅度值形成相应的波形。 1.2 参数设定 DDS输出信号频率: 其中,X为频率累加器设定值;N为相位累加器位数;fc为参考时钟频率。 例如,假定基准时钟为200 MHz,累加器的位数为32,频率控制字X 为: 0x08000000H,即为227,则: 再设定频率控制字X为0x80000000H,即为231,则: 可见,理论上通过设定DDS相位累加器位数N、频率控制字X和基准fc的值,就可以得到任一频率的输出。频率分辨率为:fres=fc/2N,由参考时钟和累加器的位数决定,当参考时钟的频率越高,相位累加器的位数越高,所得到的频率分辨率就越高。

FPGA课程设计题目

1、彩灯控制器设计 内容及要求: 设计一个彩灯控制器,具体设计要求如下: (1)要有多种花型变化(至少设计5种),led至少16路 (2)多种花型可以自动变化 (3)彩灯变换的快慢节拍可以选择 (4)具有清零开关 (5)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 2、数字秒表设计 内容及要求: 设计一用于体育比赛的数字秒表,具体设计要求如下: (1)6位数码管显示,其中两位显示min,四位显示see,显示分辨率为0.01 s。 (2)秒表的最大计时值为59min59.99see。 (3)设置秒表的复位/启动键,按一下该键启动计时,再按即清0。依此循环。 (4)设置秒表的暂行/继续键。启动后按一下暂行,再按继续。依此循环。 (5)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 3、交通信号控制系统设计 内容及要求: 设计一个十字路口交通控制系统,具体设计要求如下: (1)东西(用A表示)、南北(用B表示)方向均有绿灯、黄灯、红灯指示,其持续时间分别是40秒、5秒和45秒, 交通灯运行的切换示意图和时序图分别如图1、图2所示。 (2)系统设有时钟,以倒计时方式显示每一路允许通行的时间。 (3)当东西或南北两路中任一路出现特殊情况时,系统可由交警手动控制立即进入特殊运行状态,即红灯全亮,时钟停止计时,东西、南北两路所有车辆停止通行;当特殊运行状态结束后,系统恢复工作,继续正常运行。 图1 交通灯运行切换示意图

B红 CP A绿 A黄 A红 B黄 B绿 5S 5S 图2 交通灯时序图 (4)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 4、简易密码锁设计 内容及要求 设计一个4位串行数字锁。 (1)开锁代码为4位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮一个指示灯。否则进入“错误”状态,并发出报警信号。 (2)锁内的密码可调,且预置方便,保密性好。 (3)串行数字锁的报警由点亮一个灯,直到按下复位开关,报警才停下。此时,数字锁又自动等待下一个开锁状态。 (4)完成全部流程:设计规范文档、模块设计、代码输入、仿真、下载验证等,最后就课程设计本身提交一篇课程设计报告。 5、出租车计价器设计 内容及要求 (1)设一个出租车自动计费器,计费包括起步价、行驶计费和等待计费三个部分,用4个数码管显示出金额数目,最大值为999.9元,最小计价单位为0.1元。行驶里程在3公里范围内且等待时间未超过三分钟时按起步价8元计费;行驶里程超过三公里后按每公里2元收费;等待时间超过三分钟后按每分钟1元收费。等待时间用两个数码管显示,最大值为59分钟。 总费用=起步价+(里程-3km )*里程单价+(等待时间-3)*等候单价 (2)能够实现的功能: 显示汽车行驶里程:用四位数字显示,单位为km 。 计程范围为0~99km ,计程分辨率为1km 。 显示等候时间:用两位数字显示分钟,单位为min 。计时范围为0~59min ,计时分辨率为1min 。

FPGA设计报告

西安邮电学院 FPGA课程设计报告 题目:采用RAM实现计数器及FPGA功能验证 院系:电子工程学院 专业班级: 学生姓名: 导师姓名: 起止时间:2012-06-18至2012-06-29 2012年07 月01 日

FPGA课程设计报告提纲 1.任务 用一个10×8的双口RAM完成10个8位计数器,计数器的初值分别为 1~10,时钟频率为1MHz,计数器计数频率为1Hz。 用FPGA开发板上的按键作为计数器计数值的输出选择控制,数码管 (或led)作为选择计数器的计数值输出。 2.目的 采用RAM实现计数器及FPGA功能验证 3.使用环境(软件/硬件环境,设备等) 前仿modelsim 6.1f 后仿Quartus II 10.1 xilinx ise 9.1 FPGA课程设计详细内容 4.1 技术规范 功能: 1.先由复位键从选定的RAM地址中读出预置的8位初值存入计数模块。 2.由开始键开始计数,暂停键暂停计数并同时存入RAM中以选定的存储单元。 3. 双端口RAM为10×8RAM由一个地址切换键按顺序切换1~10个地址端 口。 4.读出数据开始计数暂 停计数存入数据 计数流程 5输出到数 码管显示 读取结果输出流程 6.分频:1Hz的秒计时频率,用来进行秒计时;

4.2 设计方案 信号定义: 分频:1Hz 的秒计时频率, 用来进行秒计时 分频:时钟信号clk ; 分频信号 clk_1hz ; 开始计时(使能) rst_n ; 切换端口 开始计 暂停计数 存入数据 计数:开始计数 rst_n 计数器复位 reset ; 计数输出 ain ; 计数暂停 pause ; 计数置数 reduce ;

FPGA课程设计报告--简易电子琴的设计

邮电大学 FPGA课程设计报告 题目:简易电子琴设计及FPGA功能验证 院系: 专业班级: 学生:XX 导师:XX 起止时间:2012、6、18至2012、6、29

一、课程设计任务: 本设计一个简易电子琴,具体功能如下: 1、具有手动弹奏和自动播放功能; 2、以按键或开关作为电子琴的琴键,输出7个音节的音阶; 3、可以自动播放曲目至少两首。 二、课程设计目的: 1、培养综合运用知识和独立开展实践创新的能力; 2、深入学习Verilog HDL,了解其编程环境; 3、学会运用Modelsim和Quartus II等编程仿真软件; 4、将硬件语言编程与硬件实物功能演示相结合,加深理解Verilog HDL的学习; 三、使用环境: 1、软件:Modelsim和Quartus II等编程仿真软件; 2、硬件:FPGA开发板。 四、课程设计详细方案及功能验证: 1、总体实现方案: 1、简易电子琴的设计通过软硬件结合实现,硬件系统包括主控器芯片、9个按键、LED、蜂鸣器等,软件资源包括编写Verilog HDL程序的应用软件Modelsim和仿真软件Quartus II。电子琴有按键代替琴键的弹奏功能和自动播放功能。 2、整个程序总共分5个模块:主模块,按键模块,曲目1模块,曲目2模块,

曲目3模块。 整个方案总共用了9个按键(key1~key9),按键key1~key7作为琴键,通过这七个按键键入不同的音阶。主模块中key8、key9两个按键用于选择是自动播放还是弹奏曲目,令mm=(key8、key9),用mm值的不同选择调用不同模块。如果mm=00,则程序调用按键模块;如果mm=01,则调用曲目1模块,播放曲目1;如果mm=10,则调用曲目2模块,播放曲目2;如果mm11,则调用曲目3模块,播放曲目3。 本次设计的框图:

数字电路与逻辑设计实验报告,基于FPGA的数字电子钟的设计与实现

学生实验实习报告册 学年学期: 课程名称: 实验项目:基于FPGA的数字电子钟的设计与实现 姓名: 学院和专业: 班级: 指导教师: 重庆邮电大学教务处制

1.系统顶层模块设计(如:图一 0) 图一0

2.主要功能模块电路设计 2.1分频模块 这是分频模块的顶层设计图主要完成了把50MHz的时钟信号降频为1KHz、500Hz、1Hz 图一 1 图一 1 这是其中100分频计数器的计数器图一 2 图一 2 2.2计时模块 分、秒计时模块(实现模60计数)图二 1 这是两个模60计数器, 图二 1

其中是连在一起的,把秒钟的进位信号接到分钟计数模块的接收端 2.2.1小时计时模块(实现模24计数图二 2) 这是模24计数器(如图:图二 2),是用74390来实现,47390 是下降沿有效 图二 2 2.3数码管动态显示模块 这是动态显示模块的顶层设计图,如图:图二 3 图二 3 2.3.1扫描模块couner6(实现6位数码管的扫描图二 4) 该模块需使用74390设计一个模6的计数器。实现了模值为6的计数功能其中应该接好 global 用作延时

图二 4 位选模块dig_select(3-8译码器用作控制哪一个数码显示器亮) 图二 5 该模块用于选择 6位数码管中的某一位显示相应字形。74138为 图二 5 2.3.2段选模块seg_select 图二 6 该模块功能是从6组4bit信号中选择一组作输出。 图二 6

2.3.3译码模块decoder(实现了把8421码,译码成数码管的显示)图二 7 图二 7 2.4整点报时 设计思路:首先要做到在整点的时候报时(也就是说再整点的时候蜂鸣器响),那么我们就观察在整点的时候电路有什么特征。 我们观察到的特征就是:在整点的时候秒钟,分钟都是为零的,也就是说在正点的时候分钟秒钟的二进制数每位都是为零的,那么这就是我们控制蜂鸣器响的条件了。那就是把秒钟分钟的每个线或非一下就好了。但是我们要实现蜂鸣器响几秒,那么就再秒钟的低两位上就不接,就实现了响四秒。 图三 1 2.5调时功能 在设计调时间功能的时候,首先就想到我们直接在计数器的cp信号上接上一个开关然后手动给cp然后计数器增加,但是我们在不用调时的时候就是正常的时钟,那么我们就用一个二选一数选器来实现选择计数器的cp信号的来自我们手动给还是来自上一个计数器的进位信号。

FPGA课程设计报告--简易电子琴的设计[1].doc

西安邮电大学 FPGA课程设计报告 题目:简易电子琴设计及FPGA功能验证 院系: 专业班级: 学生姓名: XX 导师姓名: XX 起止时间: 2012、6、18至2012、6、29

一、课程设计任务: 本设计一个简易电子琴,具体功能如下: 1、具有手动弹奏和自动播放功能; 2、以按键或开关作为电子琴的琴键,输出7个音节的音阶; 3、可以自动播放曲目至少两首。 二、课程设计目的: 1、培养综合运用知识和独立开展实践创新的能力; 2、深入学习Verilog HDL,了解其编程环境; 3、学会运用Modelsim和Quartus II等编程仿真软件; 4、将硬件语言编程与硬件实物功能演示相结合,加深理解Verilog HDL的学习; 三、使用环境: 1、软件:Modelsim和Quartus II等编程仿真软件; 2、硬件:FPGA开发板。 四、课程设计详细方案及功能验证: 1、总体实现方案: 1、简易电子琴的设计通过软硬件结合实现,硬件系统包括主控器芯片、9个按键、LED、蜂鸣器等,软件资源包括编写Verilog HDL程序的应用软件Modelsim和仿真软件Quartus II。电子琴有按键代替琴键的弹奏功能和自动播放功能。 2、整个程序总共分5个模块:主模块,按键模块,曲目1模块,曲目2模块,曲目3模块。 整个方案总共用了9个按键(key1~key9),按键key1~key7作为琴键,通过这七个按键键入不同的音阶。主模块中key8、key9两个按键用于选择是自动播放还是弹奏曲目,令mm=(key8、key9),用mm值的不同选择调用不同模块。如果mm=00,则程序调用按键模块;如果mm=01,则调用曲目1模块,播放曲目1;如果mm=10,则调用曲目2模块,播放曲目2;如果mm11,则调用曲目3模块,播放曲目3。 本次设计的框图:

武汉理工大学 FPGA综合设计报告

附件1: 学号:0121109320426 课程设计 题目DAC0832接口电路及程序设计 学院信息工程学院 专业通信工程 班级通信1104班 姓名张亚男 指导教师陈适 2014年6 月18日

课程设计任务书 学生姓名:张亚男专业班级:通信1104班 指导教师:陈适工作单位:信息工程学院 题目: DAC0832接口电路及程序设计 初始条件: VHDL程序设计及Quartus II仿真 要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求) 1、根据DAC0832 输出控制时序,利用接口电路图,通过改变输出数据设计一个锯齿 波发生器。 2、DAC0832是8位的D/A转换器,转换周期为1μs。 3、锯齿波形数据可以由256个点构成,每个点的数据长度为8位。 4、因为FPGA的系统时钟为50MHz,必须对其进行分频处理,这里进行64分频,得到 的锯齿波的频率为762.9Hz。 时间安排: 1、2014年6 月14 日,布置课设具体实施计划与课程设计报告格式的要求说明。 2、2014年6 月14 日至2014年6 月15 日,方案选择和电路设计。 3、2014年6 月16 日至2014年6 月17 日,电路调试和设计说明书撰写。 4、2014年6 月18 日,上交课程设计成果及报告,同时进行答辩。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要....................................................... 错误!未定义书签。Abstract.................................................... 错误!未定义书签。 1 设计原理................................................. 错误!未定义书签。 1.1 DAC0832的功能描述.................................. 错误!未定义书签。 1.1.1 DAC0832的主要功能 (1) 1.1.2 DAC0832的引脚功能 (1) 1.1.3 DAC0832的内部结构 (2) 1.1.4 DAC0832的工作时序 .............................. 错误!未定义书签。 1.2 FPGA与DAC0832的接口电路 (4) 1.3 DAC0832输出控制时序................................ 错误!未定义书签。 2 VHDL程序设计........................................... 错误!未定义书签。 2.1 设计任务 (7) 2.2 DAC0832接口电路程序符号图 (7) 2.3 VHDL程序 (7) 3 程序仿真及分析........................................... 错误!未定义书签。 3.1 QuartusⅡ软件简介 (9) 3.1.1 QuartusⅡ软件开发环境及基本流程 (9) 3.1.2 具体设计流程 (11) 3.2 仿真结果及分析 (13) 4 总结及体会 (14) 5.参考文献 (15)

fpga课程设计报告

第一部分 EDA技术的仿真 1、奇偶校验位产生器 1.1奇偶校验位的技术要求 奇偶校验是通信中常用的一种数据校验方式,试设计一个奇偶校验位产生器,根据输入字节(8位)产生相应的奇偶校验位(1的个数为奇数时输出低电平,即奇校验位为1)和偶校验位(1的个数为偶数时输出高电平,即偶校验位为1) 1.2奇偶校验位的原理 通过计算数据中“1”的个数是奇数还是偶数来判断数据的正确性。在被校验的数据后加一位校验位或校验字符用作校验码实现校验。 其生成方法是: 奇校验:确保整个被传输的数据中“1”的个数是奇数个,即载荷数据中“1”的个数是奇数个时校验位填“0”,否则填“1”; 偶校验:确保整个被传输的数据中“1”的个数是偶数个,即载荷数据中“1”的个数是奇数个时校验位填“1”,否则填“0”。 1.3奇偶校验位的功能及其仿真波形 奇偶校验位的功能具体见下表所示: 输入8位的二进制序列奇校验位 even 偶校验位 odd 1 1 0 1 0 0 1 1 1 0 1 0 0 0 1 1 1 0 0 1 其具体实现程序如下所示: module parity(data,odd,even); input [0:7]data; output odd,even; assign odd=^data; assign even=~odd; endmodule 根据程序我们得到如下的仿真波形: 图1 奇偶校验位仿真波形 中国计量学院信息工程学院课程设计报告P.2

2、十六位数据选择器 2.1数据选择器的原理 在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路,叫做数据选择器,数据选择器(MUX)的逻辑功能是在地址选择信号的控制下,从多路数据中选择一路数据作为输出信号。 在数据选择器中,我们设定一个控制输入端ENA ,当ENA=1时,电路不能工作,输出Y=0;而当ENA=0时,电路才处于工作状态。由于我们设计的是16选1数据选择器,因而其有4个数据控制端,即S0,S1,S2,S3,根据这4个控制端的状态有选择性的输出。 2.2数据选择器的实现电路图 我们知道一个16选1的数据选择器是由5个4选1的数据选择器组成的,4选1的基本电路如下图所示: W[0..3]S[1..0] ENA f mux_4 inst2 在左图中,ENA 为使能控制输入端,低 电平有效,S 为两位的数据控制端,W 为输入端,f 为输出端。有上述4选1的原理图我们可以得到16选1的原理图: W[0..3]S[1..0]ENA f mux_4 inst W[0..3]S[1..0]ENA f mux_4 inst1 W[0..3]S[1..0]ENA f mux_4 inst2 W[0..3]S[1..0]ENA f mux_4 inst3 W[0..3]S[1..0]ENA f mux_4 inst4S3\32控制端 S1\S0控制端 图2 16选1数据选择器原理图 2.3数据选择器的功能仿真

课程设计报告FPGA

课程设计报告 自动售货机 学院:电子与通信工程学院 班级:微电子1班 姓名:刁飞鹏 学号:09110038

自动售货机设计 任务分析 任务要求利用开发系统板,设计一个自动售货机控制芯片。自动售货机平时处于待机状态,当有钱投入之后开始工作。利用三个按键作为投币信号,分别代表投币5元、10元、20元,投入钱币以后,采用七段数码管显示投入的金额;利用另外4个按键代表4种货物,可以在售货机上选择购买的货物,假设4种货物的售价分别为3元、6元、10元、17元。选择了货物之后,七段数码管显示购物之后的找币余额,并且用LED数码管指示灯显示是否有足够的金额购买,如果投币不够,报警指示灯亮起,并且显示余额为零。选择了购买物品之后,可以按键出货或者余额不足退币。 系统的输入信号包括8个按键开关、时钟信号,输出部分有2个LED、4个七段数码管,系统框图如图所示。 自动售货机控制芯片的外部时钟由晶振产生,该开发板系统实例中晶振频率为50Mhz。

系统设计 自动售货机控制芯片系统结构框图如图所示,包括三个模块:分频器模块、核心控制模块和按键与七段数码管控制模块。其中,分频器模块主要用于产生供按键、七段数码管扫描的时钟,这个扫描时钟的周期应该大约为0.01~0.001&同时,这个分频时钟也可用于核心模块的基本控制,由于扫描时钟要和按键、七段数码管控制电路构成一个同步电路,因此,必须使用同一个分频时钟。 核心控制模块的作用主要是控制系统的状态。系统一共有三种状态,需要使用两位状态寄存器存储状态数据,每个状态之间的转换由外部按键控制,在每一个状态下,有不同的七段数码管和指示灯的输出。 按键和数码管显示控制电路是对外部的矩阵按键以及动态显示硬 件进行驱动,该模块对矩阵按键进行扫描,输出经过扫描之后的按 键结果。并且可以把核心模块输出的二进制显示数据转化为BCD码, 通过BCD译码,以及动态显示技术最终输出到动态七段数码管上显

FPGA课程设计报告

F P G A课程设计报告 (实现多功能数字钟) 专业班级: 07通信2班 姓名:朱绍兴 学号:0701******** 时间:2009.12.30

一、标题:设计多功能数字钟控制电路 二、任务书:用MAX+PLU SⅡ软件及Verilog HDL语言设计 一个多功能的数字钟,包括有时、分、秒的计 时,以及校时(对小时、分钟和秒能手动调整 以校准时间)、正点报时(每逢整点,产生“嘀 嘀嘀嘀-嘟”,4短一长的报时音)等附加功能。 三、关键词:24进制、60进制、正点报时、校时、数字钟 四、总体方案:多功能数字钟控制电路框图是由三部分组成 的,即秒分时控制电路、整点报时控制电路、 时段控制电路。用Verilog HDL硬件描述语 言完成编译和仿真。 五、原理框图如下: ↓ ↓ ↓

六、Verilog HDL硬件描述语言编写的功能模块: /*秒计数器m60*/ module m60(M,CP60M,CPM,RD); output [7:0]M; output CP60M; input CPM; input RD; reg [7:0]M; wire CP60M; always@(negedge RD or posedge CPM) begin if(!RD) begin M[7:0]<=0; end else begin if((M[7:4]==5)&&(M[3:0]==9)) begin M[7:0]<=0; end else begin if(M[3:0]==9) begin M[3:0]<=0; if(M[7:4]==5) begin M[7:4]<=0;end else M[7:4]<=M[7:4]+1; end

FPGA硬件电子琴电路设计实验报告

. FPGA实验报告 题目:硬件电子琴电路设计 一.实验目的:学习利用数控分频器设计硬件电子琴实验。 二.实验原理及内容:主系统由3个模块组成,顶层设计文件中包含三个功能模块,Speakera.v 和ToneTaba.v ,NoteTabs.v 。 模块ToneTaba是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code 输出对应该音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。 模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout向扬声器输出发声。 增加一个NoteTabs模块用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。 图1 硬件电子琴电路结构 三.实验步骤. 1.在QUARTUSII软件下创建一工程,工程名为songer,芯片名为EP2C35F672C6; 2.输入数控分频器程序并命名为Speakera.v,保存与工程相同的文件夹中。

. 其功能仿真波形和时序仿真波形分别如下: 3.输入音阶发生器程序并命名为ToneTaba.v ,保存与工程相同的文件夹中。 PreClk<=1'b0; Count4<=Count4+4'b1; end end always@(posedge PreClk)begin if(Count11>=11'h7FF) begin Count11<=Tone; FullSpkS<=1'b1; end else begin PreClk<=1'b1; Count4<=1;end else begin Count11<=Count11+11'b1; FullSpkS<=0; end end always@(posedge FullSpkS)begin Count2<=~Count2; if(Count2==1'b1) SpkS<=1'b1; else SpkS<=1'b0; end endmodule Module ToneTaba (Index,Code,High,Tone); input[3:0] Index; output[3:0] Code; output High; output[10:0] Tone; reg[3:0] Code=0; reg High=0; reg[10:0] Tone=0; always begin case(Index) 4'b0000 :begin Tone<=11'b11111111111; Code<=4'b0000;High<=1'b0;end//2047 4'b0001 :begin Tone<=11'b01100000101; Code<=4'b0001;High<=1'b0;end//773 4'b0010 :begin Tone<=11'b01110010000; Code<=4'b0010;High<=1'b0;end//912

FPGA课程设计(最终版)

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:信息工程学院 题目: 电子琴的设计 课程设计目的: 《FPGA原理与应用》课程设计的目的是为了让学生熟悉基于VHDL语言进行FPGA开发的全流程,并且利用FPGA设计进行专业课程理论知识的再现,让学生体会EDA技术的强大功能,为今后使用FPGA进行电子设计奠定基础。 课程设计内容和要求 设计内容: (1)设计一个八音电子琴。 (2)由键盘输入控制音响,同时可自动演奏乐曲。 (3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。 要求每个学生单独完成课程设计内容,并写出课程设计说明书、说明书应该包括所涉及到的理论部分和充足的实验结果,给出程序清单,最后通过课程设计答辩。 时间安排: 所需时 序号阶段内容 间 1 方案设计1天 2 软件设计2天 3 系统调试1天 4 答辩1天 合计5天 指导教师签名:年月日

系主任(或责任教师)签名:年月日

目录 摘要 (1) Abstract (2) 1设计意义和要求 (3) 1.1设计意义 (3) 1.2功能要求 (3) 2方案论证及原理分析 (4) 2.1实现方案比较 (4) 2.2乐曲实现原理 (4) 2.3系统组成及工作原理 (6) 3系统模块设计 (8) 3.1顶层模块的设计 (8) 3.2乐曲自动演奏模块的设计 (8) 3.3音阶发生器模块的设计 (9) 3.4数控分频器模块的设计 (9) 4程序设计 (11) 4.1VHDL设计语言和ISE环境简介 (11) 4.2顶层模块的程序设计 (12) 4.3乐曲自动演奏模块的程序设计 (13) 4.4音阶发生器模块的程序设计 (13) 4.5数控分频模块的程序设计 (14) 5设计的仿真与实现 (15) 5.1乐曲自动演奏模块仿真 (15) 5.2音调发生模块仿真 (18) 5.3数控分频模块仿真 (19) 5.4电子琴系统的仿真 (20) 5.5设计的实现 (22) 5.6查看RTL视图 (23) 5.7查看综合报告 (25) 6心得体会 (31) 7参考文献 (32) 8附录 (33)

FPGA课程设计报告

FPGA课程设计报告 题目:基于CPLD的 1602字符液晶显示系统设计院系:信息与电气工程学院 班级:电子信息工程 学号: 学生姓名: 指导教师: 成绩: 2011 年7 月

基于CPLD的1602字符液晶显示系统设 计 一. 设计题目: 基于CPLD的1602 字符液晶显示系统设计 二.设计要求技术指标: 要求用1602 液晶显示字符; 显示内容:学号+英文姓名; 显示方式:流动显示,开关控制字符 流动速度及方向;具有暂停和清 屏的功能; 三.设计平台: QUARTUSII软件MARS-1270 CPLD 1602 液晶 四.设计思路与设计步骤: 液晶指令介绍: 要想控制1602 液晶显示字符,首先需要弄清 楚1602 有那些可控管脚, 有哪些控制命令,如何控制其显示,如何控制其移动及如何控制其移动速度及方 (1)接口说明:

(2)基本操作时序: A. 读状态:输入:RS=L,RW=H,E=H,输出:D B0--DB7=状态字 B.写指令:输入:RS=L,RW=L,E=下降沿脉冲, DBO--DB7=指令码, 输出:无 C.读数据:输入:RS=H,RW=H,E=H输出:, D B0--DB7=数据 D.写数据:输入:RS=H,RW=L,E=下降沿脉冲, DBO--DB7=数据, 输出:无 (3)指令集及其设置说明: A. 清屏指令: 功能:<1> 清除液晶显示器即将DDRAM的内容全部填入"空白"的ASCII码20H; <2> 光标归位,即将光标撤回液晶显示屏的左上方; <3> 将地址计数器(AC)的值设为0。 B.进入设置模式指令: 功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个 字符是否移动。参数设定的情况如下所示: 位名设置 I/D 0= 写入新数据后光标左移1= 写入新数据后光标右移

FPGA技术课程设计题目及报告模板

《FPGA技术》课程设计题目(生医专业) 设计要求: 每六人选择相同题目,独立在两周内完成,并独立完成课程设计报告上交。 学号20105305-20124482,所有重修同学完成第一题;学号20130252-20130651 完成第二题 学号20130652-20130906,完成第三题;学号20131758-20131767 完成第四题 学号20131770-20131779,完成第五题;学号20131780-20132248 完成第六题 学号20132249-20132575 完成第七题 课题一数字式竞赛抢答器 具体要求: (1)设计一个可容纳3组参赛的数字式抢答器,每组设一个按钮,供抢答使用。 (2)抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。 (3)设置一个主持人“复位”按钮。 (4)主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出1~2秒的音响。 (5)设置一个计分电路,每组开始预置10分,由主持人记分,答对一次1分,答错一次减1分。 教学提示: (1)此设计问题的关键是准确判断出第一抢答者并将其锁存,实现的方法可使用触发器或锁存器,在得到第一信号后将输入封锁,使其它组的抢答信号无效。 (2)形成第一抢答信号后,用编码、译码及数码显示电路显示第一抢答者的组别,用第一抢答信号推动扬声器发出音响。 (3)计分电路采用十进制加/减计数器、数码管显示,由于每次都是加/减10分,所以个位始终为零,只要十位、百位进行加/减运算即可。 课题二VGA Monitor显示图的控制 1.设计内容 查询在不同模式的VGA Monitor的控制时序,设置相应参数时,VGA显示不同的工作模式。 2.设计要求 (1)通过FPGA产生VGA Monitor的控制时序,并利用SignalTap了解FPGA输出VGA Timing 控制讯号; (2)通过FPGA产生棋盘格等图形,在VGA显示器上进行显示; (3)可以实现VGA上小时以下模式: 在VGA Moniter 显示1024*768 60Hz 模式;640*480 85Hz 模式;800*600 72Hz 模式

FPGA抢答器设计报告

Vb开办上海电力学院 课程设计报告 信息工程系 抢答器设计报告 一、设计目的: 本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的重要环节。 本课程有助于培养学生的数字电路设计方法、掌握模块划分、工程设计思想与电路调试能力,为以后从事各种电路设计、制作与调试工作打下坚实的基础 二、实验器材和工具软件: PC机一台、QuartusII软件、DE2板。 三、设计内容: (1)抢答器可容纳四组12位选手,每组设置三个抢答按钮供选手使

用。 (2)电路具有第一抢答信号的鉴别和锁存功能。在主持人将系统复位并发出抢答指令后,蜂鸣器提示抢答开始,时显示器显示初始时间并开始倒计时,若参赛选手按抢答按钮,则该组指示灯亮并用组别显示器显示选手的组别,同时蜂鸣器发出“嘀嘟”的双音频声。此时,电路具备自锁功能,使其它抢答按钮不起作用。 (3)如果无人抢答,计时器倒计时到零,蜂鸣器有抢答失败提示,主持人可以按复位键,开始新一轮的抢答。 (4)设置犯规功能。选手在主持人按开始键之前抢答,则认为犯规,犯规指示灯亮和显示出犯规组号,且蜂鸣器报警,主持人可以终止抢答执行相应惩罚。 (5)抢答器设置抢答时间选择功能。为适应多种抢答需要,系统设有10秒、15秒、20秒和3O秒四种抢答时间选择功能。 四、设计具体步骤: 首先把系统划分为组别判断电路模块groupslct,犯规判别与抢答信号判别电路模块fgqd,分频电路模块fpq1,倒计时控制电路模块djs,显示时间译码电路模块num_7seg模块,组别显示模块showgroup 模块这六个模块,各模块设计完成后,用电路原理图方法将各模块连接构成系统。 各模块功能及代码: 1、组别判别模块 (1)功能:可容纳四组12位选手,每组设置三个抢答按钮供选手使用。若参赛选手按抢答按钮,则输出选手的组别。此时,电路具

相关主题