EDA(FPGA)DDS信号发生器课程设计实验报告

EDA(FPGA)DDS信号发生器课程设计实验报告
EDA(FPGA)DDS信号发生器课程设计实验报告

《电子系统实验报告》课程设计

总结报告

题目:DDS信号发生器

设计人员:学号:

同组人员:

班级:

指导老师:

日期:2010.06.12

DDS信号发生器

一主要功能要求:

本课程系统DDS信号发生器设计我们组利用FPGA生成DDS函数信号发生器内核和利用89S52单片机最小系统实现频率字输出和波形选择。DDS模块与单片机的通信采用SPI串口协议。系统的16位频率字输出采用单片机的SPI串口协议输出,在DDS模块内部采用16位移位寄存器和16位锁存器进行串行数据到并行数据的转换。从而实现单片机到DDS模块的通信。

DDS模块由频率累加器、相位累加器、波形查找表、D/A模块组成。且系统时钟频率工作于75MHZ。频率和相位累加器采用32位累加器。波形查找表由三个ROM表组成,分别存储正弦波、方波、三角波的量化数据。再用一个三选一选择器作为波形输出的控制器件,控制信号由单片机输出。

二进制振幅键控的数字基带信号由VHDL语言生成M序列的二进制信号。正弦波信号由正弦波表输出。二者再进过一个乘法器,再到D/A模块。由此完成2ASK模块的设计。

二进制振幅键控的数字基带信号由VHDL语言生成M序列的二进制信号。进过二选一模块选择移位全零或者全一,查ROM表,选择移位180度或者0度,再到D/A。由此完成2PSK模块设计。

(注:

正弦波进行1024次量化采用公式512+511*sin(6.18/1024*k)------k值为1到1024

对方波进行1024次量化采用前512位量化数值全为1023 后512位量化数值全为0

三角波进行1024次量化采用1.3.5.7…..1023.1021.1019………7.5.3.1的方式进行量化

二整体设计框图及整机概述

三系统实现的功能

(1)可显示信号发生器输出波形与频率。

(2)正弦波、方波、三角波输出频率范围为35HZ ~ 1.17MHZ。

(3)具有频率设置功能。

(4)输出信号频率稳定度优于0.1。

(5)输出电压幅值:在5K负载电阻上的电压峰峰值V opp>=1V。

(6)输出信号能够移2种相位。

(7)用数字示波器观察时比较好。

四、DDS模块各部分原理图

单片机与DDS模块通信接口部分

锁相环模块

频率字处理模块

波形存储表及3选1选择器

2ASK

相位调制(2PSK)和2ASK和2PSK选择模块五、系统软件流程图及流程说明

标志00

六. 程序SPI.h模块

#ifndef _spi_h_

#define _spi_h_

#define uchar unsigned char

#define uint unsigned int

sbit cs = P2^0;

sbit sck = P2^1;

sbit d_out = P2^2;

uint bdata date;

sbit send_bit = date^7;

uchar get1=0,get2=0;

void delayus(uchar n)

{

uchar x,y;

for(x=n;x>0;x--)

for(y=2;y>0;y--);

}

void send(uint send_date) //用于发送信号的器件

{

uchar num=0;

date = send_date;

cs = 1;

sck = 1;

delayus(20);

cs = 0;

delayus(20);

for(;num<16;num++)

{

sck = 0;

delayus(5);

d_out = send_bit;

delayus(20);

sck = 1;

delayus(20);

date = date<<1;

}

cs = 1;

delayus(5);

}

void send1(uint send_date) //用于发送信号的器件

{

uchar num=0;

date = send_date;

cs = 1;

sck = 1;

delayus(20);

cs = 0;

delayus(20);

for(;num<16;num++)

{

sck = 0;

delayus(5);

d_out = send_bit;

delayus(20);

sck = 1;

delayus(20);

date = date<<1;

}

cs = 1;

delayus(5);

}

void get_spi() interrupt 0 //用于接收信号的器件

{

uchar num=0;

EX0 = 0;

// EA = 0;

while (sck == 0);

for (;num<8;num++)

{ get1 = get1<<1;

while (sck == 1);

while (sck == 0);

//

if (d_out == 1)

get1 = get1 | 0x01;

else get1 = get1 | 0x00;

}

while (sck == 0);

for (num=0;num<8;num++)

{ get2 = get2<<1;

while (sck == 1);

while (sck == 0);

//

if (d_out == 1)

get2 = get2 | 0x01;

else get2 = get2 | 0x00;

}

//EA = 1;

IE0 = 0;

EX0 = 1;

}

#endif

Key44.h

#ifndef __KEY_H__

#define __KEY_H__

#define uint unsigned int

#define uchar unsigned char

uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0 x7f,0x6f};

/************************************ ********************************

* 名称: Delay_1ms()

* 功能: 延时子程序,延时时间为1ms * x * 输入: x (延时一毫秒的个数)

* 输出: 无

************************************* **********************************/ void Delay_1ms(uint i)

{

uchar x,j;

for(j=0;j

for(x=0;x<=148;x++);

}

/************************************ ********************************

* 名称: Keyscan()

* 功能: 实现按键的读取。下面这个子程序是按处理矩阵键盘的基本方法处理的。* 输入: 无

* 输出: 按键值

************************************* **********************************/ uchar Keyscan(void)

{

uchar i,j, temp, Buffer[4] = {0xfe,0xfd,0xfb,0xf7};

for(j=0; j<4; j++)

{

P1 = Buffer[j];

/*以下三个_nop_();作用为让P1 口的状态稳定*/

// _nop_();

// _nop_();

// _nop_();

temp = 0x10;

for(i=0; i<4; i++)

{

if(!(P1 & temp))

{

return (i+j*4);

//返回取得的按键值

}

temp <<= 1;

}

}

}

#endif

Lcd1602.h

#ifndef __LCD1602_H__

#define __LCD1602_H__

#define uchar unsigned char

#define uint unsigned int

//这三个引脚参考资料

sbit E=P2^7; //1602使能引脚

sbit RW=P2^6; //1602读写引脚sbit RS=P2^5; //1602数据/命令选择引脚

/************************************ ********************************

* 名称: delay()

* 功能: 延时,延时时间大概为140US。* 输入: 无

* 输出: 无

************************************* **********************************/ void delay()

{

int i,j;

for(i=0; i<=10; i++)

for(j=0; j<=2; j++);

}

/************************************ ********************************

* 名称: Convert(uchar In_Date)

* 功能: 因为电路设计时,P0.0--P0.7接法刚好了资料中的相反,所以设计该函数。* 输入: 1602资料上的值

* 输出: 送到1602的值

************************************* **********************************/ uchar Convert(uchar In_Date)

{

uchar i, Out_Date = 0, temp = 0;

for(i=0; i<8; i++)

{

temp = (In_Date >> i) & 0x01;

Out_Date |= (temp << (7 - i));

}

return Out_Date;

}

/************************************ ********************************

* 名称: enable(uchar del)

* 功能: 1602命令函数

* 输入: 输入的命令值

* 输出: 无

************************************* **********************************/ void enable(uchar del)

{

P0 = Convert(del);

RS = 0;

RW = 0;

E = 0;

delay();

E = 1;

delay();

}

/************************************ ********************************

* 名称: write(uchar del)

* 功能: 1602写数据函数

* 输入: 需要写入1602的数据

* 输出: 无

************************************* **********************************/

void write(uchar del)

{

P0 = Convert(del);

RS = 1;

RW = 0;

E = 0;

delay();

E = 1;

delay();

}

/************************************ ********************************

* 名称: L1602_init()

* 功能: 1602初始化,请参考1602的资料* 输入: 无

* 输出: 无

************************************* **********************************/ void L1602_init(void)

{

enable(0x01);

enable(0x38);

enable(0x0c);

enable(0x06);

enable(0xd0);

}

/************************************ ********************************

* 名称: L1602_char(uchar hang,uchar lie,char sign)

* 功能: 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用该函数如下

L1602_char(1,5,'b')

* 输入: 行,列,需要输入1602的数据* 输出: 无

************************************* **********************************/ void L1602_char(uchar hang,uchar lie,char sign)

{

uchar a;

if(hang == 1) a = 0x80;

if(hang == 2) a = 0xc0;

a = a + lie - 1;

enable(a);

write(sign);

}

/************************************ ********************************

* 名称: L1602_string(uchar hang,uchar lie,uchar *p)

* 功能: 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下

L1602_string(1,5,"ab cd ef;")

* 输入: 行,列,需要输入1602的数据* 输出: 无

************************************* **********************************/ void L1602_string(uchar hang,uchar lie,uchar *p)

{

uchar a;

char q=0;

if(hang == 1) a = 0x80;

if(hang == 2) a = 0xc0;

a = a + lie - 1;

enable(a);

while(1)

{

if(*(p+q)=='\0') break;

write(*(p+q));

q++;

}

}

#endif

主程序

include

#include

#include #include #define uint unsigned int

#define uchar unsigned char #define ulong unsigned long int sbit d1 = P2^3;

sbit d0 = P2^4;

ulong s_data;

ulong m,n,c;

uchar Key_Value,Key_Value1;

/************************************ ***********************/

void display(unsigned long int t)

{ ulong t1,t2,t3,t4,t5,t6,t7;

// t8=t%100000000;

t7=t%10000000;

t6=t%1000000;

t5=t%100000;

t4=t%10000;

t3=t%1000;

t2=t%100;

t1=t%10;

// L1602_char(1,7,t8/10000000+48);

L1602_char(1,8,t7/1000000+48);

L1602_char(1,9,t6/100000+48);

L1602_char(1,10,t5/10000+48);

L1602_char(1,11,t4/1000+48);

L1602_char(1,12,t3/100+48);

L1602_char(1,13,t2/10+48);

L1602_char(1,14,t1+48);

}

void display1(uchar t)

{ int t1;

t1=t%10;

L1602_char(2,4,t1+48);

}

void display2(uchar t)

{ int t1;

t1=t%10;

L1602_char(2,9,t1+48);

}

void main()

{

s_data=0x0001;

send(s_data);

L1602_init();

L1602_string(1,1,"fout=");

L1602_string(1,15,"Hz");

L1602_string(2,1,"d1=");

L1602_string(2,6,"d0=");

L1602_string(2,12,"fbo");

display(35);

display1(d1);

display2(d0);

while(1)

{ P1 = 0xf0;

if(P1 != 0xf0)

{

Delay_1ms(15); //按键消抖

if(P1 != 0xf0)

{

Key_Value = Keyscan()%10;

Key_Value1 = Keyscan()/10;

if(Key_Value==0&&Key_Value1==0)//20 de jia

{

s_data=s_data +0x0001;

if(s_data==65535)

{

s_data=0x0001;

}

send(s_data);

n=(s_data+1)*18;

display(n);

Delay_1ms(100);

}

if(Key_Value==1&&Key_Value1==0) //100 de jia

{

s_data=s_data +0x0006;

if(s_data==65535)

{

s_data=0x0001;

}

send(s_data);

n=(s_data+1)*18;

display(n);

Delay_1ms(100);

}

if(Key_Value==2&&Key_Value1==0) // 1k de jia

{

s_data=s_data +0x0040;

if(s_data==65535)

{

s_data=0x0001;

}

send(s_data);

n=(s_data+1)*18;

display(n);

Delay_1ms(100);

}

if(Key_Value==3&&Key_Value1==0) //10k de jia

{

s_data=s_data +0x0280;

if(s_data==65535)

{

s_data=0x0001;

}

send(s_data);

n=(s_data+1)*18;

display(n);

Delay_1ms(100);

}

if(Key_Value==4&&Key_Value1==0) // 100k de jia

{

s_data=s_data +0x1900;

if(s_data==65535)

{

s_data=0x0001;

}

send(s_data);

n=(s_data+1)*18;

display(n);

Delay_1ms(100);

}

/************************************ ************************************* ***************/

if(Key_Value==5&&Key_Value1==0) //

20 de jian

{

s_data=s_data -0x0001;

if(s_data==0)

{

s_data=0x0001;

}

send(s_data);

n=(s_data+1)*18;

display(n);

Delay_1ms(100);

}

if(Key_Value==6&&Key_Value1==0) //100 de jian

{

s_data=s_data -0x0006;

if(s_data==0)

{

s_data=0x0001;

}

send(s_data);

n=(s_data+1)*18;

display(n);

Delay_1ms(100);

}

if(Key_Value==7&&Key_Value1==0) // 1k de jian

{

s_data=s_data -0x0040;

if(s_data==0)

{

s_data=0x0001;

}

send(s_data);

n=(s_data+1)*18;

display(n);

Delay_1ms(100);

}

if(Key_Value==8&&Key_Value1==0) //10k de jian

{

s_data=s_data -0x0280;

if(s_data==0)

{

s_data=0x0001;

}

send(s_data);

n=(s_data+1)*18;

display(n);

Delay_1ms(100);

}

if(Key_Value==9&&Key_Value1==0)

// 100k de jian

{

s_data=s_data -0x1900;

if(s_data==0)

{

s_data=0x0001;

}

send(s_data);

n=(s_data+1)*18;

display(n);

Delay_1ms(100);

}

/************************************ ************************************* ********/

/************************************ ************************************* ********/

if(Key_Value==0&&Key_Value1==1)

// d0

{

d0=~d0;

display2(d0);

if(d1==0)

{

if(d0==0)

{

L1602_string(2,12,"sin");

}

if(d0==1)

{

L1602_string(2,12,"saj");

}

}

Delay_1ms(100);

}

if(Key_Value==1&&Key_Value1==1) // d1

{

d1=~d1;

display1(d1);

if(d1==1)

{

L1602_string(2,12,"fbo");

}

if(d1==0)

{

if(d0==0)

{

L1602_string(2,12,"sin");

}

if(d0==1)

{

L1602_string(2,12,"saj");

}

}

Delay_1ms(100);

}

}

}

}

}

七.总结设计及体会

总结:

(1)刚开始选择系统设计方案时,我们组进行了激烈的讨论,最终决用我们已经

做好的单片机模块及4*4矩阵键盘。而单片机与DDS模块通信采用SPI协议。

三种波形采用三个ROM表来存。

(2)在确定了基本思路后,我们就开始分工,做单片机程序,DDS模块的设计,

做三种波形的量化数据处理,及单个模块的波形仿真。

(3)当将单片机模块与DDS模块进行联调时,问题出现了单片机与DDS模块能

通信,但是只能通信8位数据。与我原来想的通信16位有区别。导致只能控制

信号4k到1.17M的信号。跟老师沟通情况后,认真考虑清楚情况,认定原因原

来是单片机的SPI模块出现问题。经过调试程序终于可以用了。

(4)在基本功能都调通时,在原来讨论的基础上加了调相(2PSK)与2ASK模

体会:

(1)做事情前先确认目标。分析可行的方案。

(2)做事情要从小做起,简单做起,起点不要高,但是终点可以高

(3)遇到问题要虚心请教,团队,同学,老师都是我们的资源。

(4)通过此次的设计使我更加了解了FPGA的硬件特性与软件开发工具QuartusII的使用并且掌握了DDS函数信号发生器的原理。

(5)感谢金恩老师和耀国老师的悉心教导。

参考资料:

EDA技术实用教程科学出版社潘松黄继业编

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课程设计题目

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课程设计报告 题目:简易电子琴设计及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].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课程设计报告

第一部分 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课程设计报告

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原理与应用》课程设计的目的是为了让学生熟悉基于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抢答器设计报告

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

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

FPGA课程设计报告

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

基于CPLD勺1602字符液晶显示系统设计 一.设计题目: 基于CPLD勺1602字符液晶显示系统设计 二?设计要求技术指标: 要求用1602液晶显示字符; 显示内容:学号+英文姓名; 显示方式:流动显示,开关控制字符流动速度及方向;具有暂停和清屏的 功能; 三?设计平台: QUARTUSII 6.0软件MARS-1270 CPLD 1602 液晶 四?设计思路与设计步骤: 1.1602液晶指令介绍: 要想控制1602液晶显示字符,首先需要弄清楚1602有那些可控管脚,有哪些控制命令,如何控制其显示,如何控制其移动及如何控制其移动速度及方向等,下面首先介绍一下我所要用的指令及管脚等。 (1)接口说明: (2)基本操作时序: A. 读状态:输入:RS=L RW=H,E=H,输出:DB0--DB7= 犬态字

FPGA课程设计报告

课程设计 开课学期: 2014年—2015年下学期 课程名称:FPGA课程设计 学院:信息科学与工程学院 专业:集成电路设计与集成系统 班级:集成1201班 学号:20121221077 姓名:蔚 任课教师:涛 2015 年 7 月 21 日

基于FPGA的数字钟设计 摘要 本文介绍一种利用现场可编程逻辑器件FPGA产生多功能数字钟的设计方案。数字钟是采用数字电路实现对时、分、秒数字显示的计时装置,是人们日常生活中不可少的必需品。 本设计采用EDA技术,以硬件描述语言Verilog为系统逻辑描述手段设计文件,在Quartus II工具软件环境下,由各个基本模块共同构建了一个基于FPGA的数字钟。 系统由时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证。开发板采用5CSEMA5F31C6N。本次设计的多功能数字钟,具有时、分、秒的数码管显示功能,以24小时循环计数,具有整点报时功能,并有由按键输入进行数字钟的校时、清零、启停功能。 关键词:可编程逻辑器件 FPGA Verilog 数字钟 EDA技术

Abstract This paper introduces a kind of based on field programmable logic device FPGA design of multi-function digital clock, the digital clock is used in digital circuits, and seconds digital display timing device is in people's daily life necessities. This design using EDA technology, hardware description language Verilog logic system description method of design documents, in the Quartus II software environment, by all the basic modules together to build a a FPGA based digital clock. System consists of the clock module, control module, time module, data decoding module, display and broadcast module composition. Program after compilation and simulation design, programmable logic device to download verification. Development board using the multi-function digital clock 5CSEMA5F31C6N. this design, with time, points, the second digital tube display, to a 24-hour cycle count, with the whole point timekeeping function and input by the key of the school of digital clock, clear, open and stop function. Key words: programmable logic device FPGA Verilog Digital cloc EDA Technology

FPGA课程设计报告书模板

FPGA课程设计(报告) 题目: 学院:电子工程学院 系部:微电子学系 专业班级:微电子1702 学生姓名: 指导教师:李哲 起止时间:2020年06月01日—2020年06月12日

目录 1.课程设计题目及要求 (4) 1.1设计题目:基于FPGA的波形产生器。 (4) 1.2设计内容 (4) 1.3基本功能 (4) 1.4课程设计目的 (5) 1.5已完成功能 (5) 2.系统设计 (5) 3. FPGA设计 (6) 3.1设计思路 (6) 3.2顶层模块设计 (7) 3.3方波产生模块 (8) 3.4 锯齿波产生模块 (8) 3.5 三角波产生模块 (8) 3.6 正弦波ROM模块 (8) 3.7 DAC模块 (9) 9 (9) 4.2波形选择器 (9) 4.3 D/A转换器 (9) 4.4低通滤波器 (9) 5.模块划分 (10) 5.1 模块概述 (10) 5.2时钟控制模块 (10) 5.3 相位控制模块 (11) 5.4偏移控制模块 (12) 5.5 波幅控制模块 (13) 5.6 波形ROM定制模块 (13) 5.7波形数据产生模块 (14) 6.仿真 (14) 7 心得体会 (14) 8 参考文献 (15) 9附录 (15)

1.课程设计题目及要求 1.1设计题目:基于FPGA的波形产生器。 1.2设计内容 通过的以Xilinx Spartan 3E实验板为控制核心,用直接数字频率合成技术(DDS),经板上DA转换输出模拟信号,实现频率和输出电压峰-峰值都可调。 1.3基本功能 1)具有产生正弦波、方波、三角波三种周期性波形的功能。 2)输出波形的频率范围为100Hz-20kHz(非正弦波频率按10次谐波计算)。重复频率可调,频率步进间隔≤100Hz。 3) 输出波形幅度范围0-3V(峰峰值),可按步进0.1V(峰峰值)调整。 4)由外界按键输入选择产生波形的种类、频率与幅度。 5)界面显示输出波形的类型、重复频率(周期)和幅度等信号参数。 在完成基本功能的基础上,本系统还可以完成以下扩展功能: 1)扩展输出波形频率范围1Hz-100KHz,频率步进间隔最小为 1Hz。 2)扩展能生成其他波形,如锯齿波。 3)方波占空比可调。

课程设计fpga密码锁

FPGA实验报告

一、实验目的 1.设计一个密码锁 2.加深FPGA电路原理的理解 3.掌握VHDL语言的使用,学会用VHDL语言来编程解决实际问题 4.学会使用EDA开发软件设计小型综合电路,掌握仿真的技巧 5.学会应用开发系统实现硬件电路,检验电路的功能 二、实验内容 题目:电子密码锁 内容:设计一个4位串行数字锁 1.开锁代码为4位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开锁时,方可开锁。否则进入“错误”状态,发出报警信号。 2.锁内的密码可调,且预置方便,保密性好。 3.串行数字锁的报警,直到按下复位开关,才停下。此时,数字锁又自动等待下一个开锁状态。 三、实验步骤 1.系统总框图 本系统的硬件部分主要由密码锁按键消抖模块,密码输入比较更改模块,密码显示模块、报警模块组成。整体系统框图如下图所示。

2.密码锁的主要功能 密码锁控制器的主要功能有: (1)密码输入:有二个按键来控制(分别代表0和1),每按下一个键,要求在数码管上显示,并依次左移。 (2)密码校验:如果有按键按下,直到松开该按键,如果密码校验正确,无变化,否则如果密码校验错误蜂鸣器响,表明密码错误。(3)错误报警:密码输入错误开始报警。 (4)密码修改:输入密码正确后按按键输入要设置和更改的密码,按按键确认密码设置与更改,则密码设置成功。 3.密码锁的各个模块 (1)按键消抖。 每按下一个键,仅产生一个信号脉冲,作为按键的使能信号,使能信号控制显示的数字。 (2)密码输入比较 密码输入值的比较主要有两部分,密码位数和内容,任何一个条件不满足,都不能打开锁。锁内密码为“0000”, key2 和key1 置低电平,分别表示输入“1”和“0”。输入密码前先按start键,再依次正确输入0000,会在数码管逐一显示,按确认键,经检验,输入的密

课程设计报告FPGA

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

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

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

FPGA课程设计报告

FPGA课程设计报告

多功能数字钟电路设计报告 任务书 设计一个具有时、分、秒计时的电子钟电路,按24小时制计时。要求: 1.准确计时,以数字形式显示时、分、秒的时间; 2.具有分、时校正功能,校正输入脉冲频率为1Hz; 3.具有仿广播电台整点报时的功能,即每逢59分51秒、53秒、55秒、57秒时发出4声500Hz低音,在59分59秒发出一声1KHz高音,它们的持续时间均为1秒,最后一声高音结束时刻恰为正点时刻; 4.具有定时闹钟功能,且最长闹铃时间为1分钟。要求可任意设置闹钟的时、分;闹铃信号为500Hz和1KHz的方波信号,交替输出,且均持续1秒。设置一个停止闹铃控制键,可以停止输出闹铃信号。 摘要 数字钟是一种用数字电路技术实现日、时、分、秒计时的装置,与传统的机械式时钟相比,具有更高的准确性和直观性,且无机械传动装置,具有更更长的使用寿命,因此得到了广泛的使用。小到人们日常生活中的电子手表,大到车站、码头、机场等公共场所的大型数

显电子钟。 本课程设计要用通过简单的逻辑芯片实现数字时钟。要点在于用555芯片连接成输出一秒的多谐振荡器用于时钟的秒脉冲,用74LS90(10进制计数器)74LS192(4位二进制计数器)等连接成60和12进制的计数器,再通过七段数码管显示,外加上校时电路和整点报时电路即构成了简单数字钟。扩展电路可实现定点报时功能。 原理图 概述 (一)、分频器: 分频器的作用是将脉冲频率调整为500Hz和1kHz两种脉冲频率,作为适中的输入信号。

其Verilog语言描述为:module divider(f,_500HzOut,_1KHzOut, ncR,CLOCK_50,s); input ncR,CLOCK_50,s; output _500HzOut,_1KHzOut,f; wire _1HzOut,_5HzOut; assign f=s?_5HzOut:_1HzOut; divn #(.WIDTH(26),.N(50000000)) u0(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_1HzOut) ); divn #(.WIDTH(17),.N(100000)) u1(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_500HzOut) ); divn #(.WIDTH(16),.N(50000)) u2(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_1KHzOut)

fpga数字钟课程设计报告

f p g a数字钟课程设计报 告 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

课程设计报告 设计题目:基于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的数字钟设计 班级:电子信息工程1301 学号:20133638 姓名:王一丁 指导教师:李世平 设计时间:2016年1月

摘要 EDA(Electronic Design Automation)电子设计自动化,是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成软件方式设计得电子系统到硬件系统,最终形成集成电子系统或专用集成芯片。本次课程设计利用Quartus II 为设计软件,VHDL为硬件描述语言,结合所学知识设计一个多功能时钟,具有显示年、月、日、时、分、秒显示,计时,整点报时,设定时间等功能。利用硬件描述语言VHDL 对设计系统的各个子模块进行逻辑描述,采用模块化的思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑综合优化、逻辑仿真、最终完成本次课程设计的任务。 关键词:EDA VHDL语言数字钟

目录 摘要 1 课程设计目的 2 课程设计内容及要求 2.1 设计任务 2.2 设计要求 3 VHDL程序设计 3.1方案论证 3.2 系统结构框图 3.3设计思路与方法 3.3.1 状态控制模块 3.3.2 时分秒模块 3.3.3 年月日模块 3.3.4 显示模块 3.3.5脉冲产生模块 3.3.6 扬声器与闹钟模块 3.4 RTL整体电路 4 系统仿真与分析 5 课程设计总结,包括.收获、体会和建议 6 参考文献

1 课程设计目的 (1)通过设计数字钟熟练掌握EDA软件(QUARTUS II)的使用方法,熟练进行设计、编译,为以后实际工程问题打下设计基础。 (2)熟悉VHDL 硬件描述语言,提升分析、寻找和排除电子设计中常见故障的能力。 (3)通过课程设计,锻炼书写有理论根据的、实事求是的、文理通顺的课程设计报告。 2 课程设计内容及要求 2.1 设计任务 (1)6个数字显示器显示时分秒,setpin按键产生一个脉冲,显示切换为年月日。 (2)第二个脉冲可预置年份,第三个脉冲可以预置月份,依次第四、 五、六、七个脉冲到来时分别可以预置时期、时、分、秒,第八个脉冲到来后预置结束正常从左显示时分秒。 (3)up为高时,upclk有脉冲到达时,预置位加一,否则减一。 2.2 设计要求 (1)在基本功能的基础上,闹钟在整点进行报时,产生一定时长的高电平。 (2)实现闹钟功能,可对闹钟时间进行预置,当达到预置时间时进行报时。

相关主题
相关文档
最新文档