基于FPGA的外设电路.docx

上传人:b****1 文档编号:2736092 上传时间:2023-05-04 格式:DOCX 页数:14 大小:137.41KB
下载 相关 举报
基于FPGA的外设电路.docx_第1页
第1页 / 共14页
基于FPGA的外设电路.docx_第2页
第2页 / 共14页
基于FPGA的外设电路.docx_第3页
第3页 / 共14页
基于FPGA的外设电路.docx_第4页
第4页 / 共14页
基于FPGA的外设电路.docx_第5页
第5页 / 共14页
基于FPGA的外设电路.docx_第6页
第6页 / 共14页
基于FPGA的外设电路.docx_第7页
第7页 / 共14页
基于FPGA的外设电路.docx_第8页
第8页 / 共14页
基于FPGA的外设电路.docx_第9页
第9页 / 共14页
基于FPGA的外设电路.docx_第10页
第10页 / 共14页
基于FPGA的外设电路.docx_第11页
第11页 / 共14页
基于FPGA的外设电路.docx_第12页
第12页 / 共14页
基于FPGA的外设电路.docx_第13页
第13页 / 共14页
基于FPGA的外设电路.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA的外设电路.docx

《基于FPGA的外设电路.docx》由会员分享,可在线阅读,更多相关《基于FPGA的外设电路.docx(14页珍藏版)》请在冰点文库上搜索。

基于FPGA的外设电路.docx

基于FPGA的外设电路

基于FPGA的外设电路

 

摘要

FPGA器件作为可编程逻辑主流硬件,近年来,应用越来越广泛,在现代科学技术中占有举足轻重的作用和地位。

其外设电路作为芯片与外界输入方式之一,是十分具有研究价值的。

FPGA器件不断增加新的模块,功能越来越强大,基于FPGA的外设电路也顺应形势,不断升级。

本设计综合行列式键盘、LED显示器、时钟一体,应用VerilogHDL语言实现下述功能:

计时功能,包括时分秒的计时;校时功能:

对时分秒手动调整以校准时间;键盘功能:

应用4*4行列式键盘,可实现0-9数字的直接输入;LED动态扫描显示和闪烁,移位,灭零等功能,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过AlteraQuartusⅡ8.0完成综合、仿真。

本设计实现以上FPGA各功能,可作为EDA技术发展的价值体现。

此程序通过下载到FPGA芯片后,可应用于实际的数字钟显示中。

关键字:

行列式键盘、LED显示器、时钟、VerilogHDL。

 

ABSTRACT

FPGAprogrammablelogicdevices,asthemainstreamofhardware,inrecentyears,moreandmoreextensiveapplicationsinmodernscienceandtechnologyplaysavitalroleandstatus.Itsperipheralcircuitchipwiththeoutsideworldasoneofinputisveryvaluableinresearch.FPGAdevicesareconstantlyaddingnewmodules,morepowerful,FPGA-basedresponsetotheperipheralcircuitisalsothesituationescalated.

Thedeterminantofthedesignofanintegratedkeyboard,LEDdisplay,integratedclock,applicationVerilogHDLlanguagetoachievethefollowingfunctions:

timefunctions,includingthetimewhenminutesandseconds;schoolfunctions:

everyminuteoftimetomanuallyadjustthecalibrationtime;keyboardfunctions:

applicationof4*4determinantkeyboard,numbers0-9canbedirectlyimported;LEDdynamicscanningdisplayandblinking,shift,suchasanti-zerofunction,highlightsthehardwaredescriptionlanguageasagoodreadability,easytounderstandtheadvantagesofportability,andAlteraQuartusⅡ8.0throughthecompletionofsynthesis,simulation.FPGADesignandImplementationoftheabovevariousfunctions,canbeusedasthevalueofEDAtechnologyembodied.

ThisprocessbydownloadingtotheFPGAchipcanbeusedinpracticaldigitalclockdisplay.

Keywords:

determinantkeyboard,LEDdisplay,clock,VerilogHDL.

 

引言

计算机技术和微电子工艺的发展,使得现代数字系统的设计和应用进入了新的阶段。

电子设计自动化(EDA)技术在数字系统设计中起的作用越来越重要,新的工具和新的设计方案不断推出,可编程逻辑器件不断增加新的模块,功能越来越强,硬件设计语言也顺应形式,推出新的标准,更加好用,更加便捷。

本设计主要以FPGA器件、EDA软件工具、VerilogHDL硬件描述语言三方面内容作为主线,综合行列式键盘,LED显示器件,以及时钟模块于一体,实现三个主要模块的联动,输入部分为4*4行列式键盘,具备0-9十个数字键、修改/确认键、左右移动键,输出数据为6位二进制代码,输出部分为六位7段LED数码管,可实现时分秒显示,时钟灭零显示,修改闪烁以及小数点秒闪烁功能。

而顶层文件时钟模块则将输入输出部分联结起来,实现时钟发生,显示缓存,数据修改,移位,灭零等功能。

另时钟产生模块采用FPGA硬件内置66MHz分频,产生250Hz,5Hz,1Hz信号供时钟模块,输入输出模块使用。

本设计完全采用VerilogHDL语言完成,此程序通过下载到FPGA芯片后,可应用于实际的数字钟显示中。

 

第一章系统硬件及设计软件介绍

1.1开发板介绍

本设计需要的硬件资源主要有:

1、六位七段数码管

2、4*4行列式键盘

经过仔细筛选,最终选定联华众科FPGA开发板FA130。

联华众科FPGA开发板FA130核心器件为AlteraCyclone系列的EP1C3,配置芯片为EPCS1,FA130上可以运行SOPCBuilder制作的简单的工程。

FA130具有丰富的板载资源,由于板载有51单片机,FA130还可以作为51单片机的学习开发板。

FA130实现了3.3V系统与5V系统对接功能,具体是通过74LVXC3245(或简称3245)实现的。

FA130随板资料中包括丰富的开发实例和制作开发实例的详细步骤说明,以及QuartusII环境下的设计输入,综合,仿真等内容,另外还包括SOPC建立和开发方面内容,如NiosII的建立和NiosII环境下C/C++程序开发等。

FA130的EDA开发实例包括VHDL和Verilog两个版本,FA130的51单片机开发实例包括汇编和C语言两个版本。

同时FA130还包括详细的使用手册和丰富的配套资料,非常适合FPGA,VHDL,Verilog开发学习者使用。

另外FA130随板DVDROM中还包括VS.NET的开发实例,在学习FPGA开发、51单片机开发的同时还可以学习到VS.NET开发环境中C#程序的开发,VS.NET和C#也是WINCE.NET系统上主要的开发环境和编程语言。

图1-1FA130开发板

联华众科FPGA开发板FA130具有丰富的板载资源。

核心器件包括FPGA芯片AlteraEP1C3T100和PLCC封装的单片机STC89LE52。

EP1C3可用I/O分4组全部以插针的形式引出,供外部扩展时使用。

FPGA配置芯片为EPCS1,EPCS1为FLASH类型存储器,存储空间为1M位(1,046,496bits),EPCS1可以工作在5V或3.3V,在本开发板EPCS1与FPGA的IO相同工作电压为3.3V。

时钟资源包括频率为66M有源晶振和1个外接有源晶振插座,外接有源晶振插座可直接安装用户自己希望的任何频率有源晶振。

复位电路由一个复位按键和一片复位芯片组成,复位芯片为IMP812T,IMP812T输出高电平有效的复位脉冲,脉冲宽度为140ms。

IMP812T的复位门限(ResetThreshold)为3.08V,输出的复位信号同时提供给FPGA芯片和单片机使用,FA130上EP1C3和51单片机89LE52均工作在3.3V电源电压。

显示资源包括6位共阴七段数码管,8位LED(绿色),1片1602LCD显示屏。

键盘资源包括4*4按键阵列,4个独立按键,其中4个独立按键可以作为单片机的中断源使用。

电源部分包括1片LM1085-5.0,1片AS2830-3.3和1片AS2830-1.5,LM1085-5.0提供5V直流电源作为AS2830-3.3,AS2830-1.5输入电源和LCD1602供电电源。

AS2830-3.3提供3.3V直流电源,作为FPGA的IO电源和开发板上其他设备电源。

AS2830-1.5提供1.5V直流电源,作为FPGA的核心供电电源。

存储资源包括1片24C02和1片93C46,24C02连接在I2C总线上,是存储空间为256字节串行E2PROM,24C02的设备地址也可以由板上的3位拨码开关设置。

93C46为SPI接口的串行E2PROM,93C46存储空间为128字节。

其他资源还包括8位拨码开关,连接到EP1C3上。

1.2设计软件介绍

本设计使用Altera公司的QuartusII软件,版本为8.0。

AlteraQuartusII设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。

工程师使用同样的低价位工具对StratixFPGA进行功能验证和原型设计,又可以设计HardCopyStratix器件用于批量成品。

系统设计者现在能够用QuartusII软件评估HardCopyStratix器件的性能和功耗,相应地进行最大吞吐量设计。

  Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。

该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。

Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。

改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。

第二章系统方案设计

设计要求:

1、行列式键盘电路包括:

时钟产生电路,扫描电路、按键标志产生电路和键盘译码器;

2、LED显示电路设计包括:

时钟发生器、扫描信号发生器、显示缓存器、七段译码器、小数点产生模块和闪烁模块;

3、键盘与LED显示电路配合,完成数据修改,移位,灭零和小数点移动等功能。

2.1总设计方案

根据课题要求,本设计主要由三个模块完成,

1)输入:

行列式键盘,具备0-9十个数字键及数据修改/确认,左移位键,右移位键三个功能键。

2)输出:

六位7段数码管。

3)主程序:

实现时钟产生,键位识别,数据修改,移位等功能。

4)应以上三个模块要求,设计分频模块,产生符合要求的方波。

如图2-1所示:

图2-1系统设计方案图

2.2分频器设计方案

本设计采用FPGA硬件设计,其内置时钟频率为66MHz,而三个模块需要的是频率较低的信号,应通过寄存器计数来实现分频,考虑到高低频率差异太大,所以拆分成为两个寄存器来实现,这样可以得到250Hz信号,然后再使用两个寄存器可分别得到5Hz,1Hz两个信号。

如图2-2所示。

图2-2分频示意图

2.3行列式键盘设计方案定做各专业论文,如需全文可联系QQ2438635173

行列式键盘的工作方式是读取行列线的状态,查看是否有按键按下。

键盘部分提供一种扫描的工作方式,能对键盘不断扫描、自动消抖、自动识别按下的键,并给出编码,能对双键或n个键同时按下的情况实行保护。

本设计需要实现数据修改,移位,所以除了0-9数字键盘以外,还至少需要左右移位键及修改/确认三个功能键,如图2-3所示。

图2-3键盘示意图

键盘需要响应迅速,所以采用了250Hz信号,输入由X1,X2,X3,X4;Y1,Y2,Y3,Y4八根纵横交错的连接线组成,当某根X连接线和Y连接线同时为低电平时有效,例如当X3,Y2为低电平时,识别为“0”键,将输出相应信号供主程序识别。

如图2-4所示。

图2-4键盘电路原理

2.4六位7段LED显示设计方案

在译码器设计时,常用发光二极管的状态验证设计是否满足要求。

这种方式是很直观的,但在计数器设计时,这样的验证方式就显得很不直观,尤其当计数器的位数增加时(如百进制计数),太多的发光管将使结果的独处非常困难。

此时应采用数码管显示,但是当用七段数码显示器显示的位数较多时(如显示8位)BCD码十进制数),为了节省硬件开支,常用动态显示方法,即对各LED数码管循环扫描。

分时使用显示器驱动电路。

1)驱动方式:

直接驱动方式,直接对数码管相应的字段给出驱动电平,以显示字形,其真值表如表2-1所示:

表2-1LED真值表

a

b

c

d

e

f

g

输出

1

1

1

1

1

1

0

0

0

1

1

0

0

0

0

1

1

1

0

1

1

0

1

2

1

1

1

1

0

0

1

3

0

1

1

0

0

1

1

4

1

0

1

1

0

1

1

5

1

0

1

1

1

1

1

6

1

1

1

0

0

0

0

7

1

1

1

1

1

1

1

8

1

1

1

1

0

1

1

9

2)动态扫描显示

动态扫描的FPGA实现可以采用将所有数码管的相同字段并联,由FPGA芯片的输出信号a,b,c,d,e,f,g直接驱动相应字段,由软件编程产生片选信号MS1,MS2,…,MS6循环选中6个数码管。

数码管显示的字形由表2-2决定。

3)相关知识

共阴数码管如右图2-5所示:

每一条线分别对应一个管脚,当管脚为‘1’时,这条线为亮,当管脚设置为‘0’时,这条线不亮。

例如:

设置a的管脚为‘1’,那么0这条线就会亮;设置g的管脚为‘1’,那么6这条线就会亮。

要让数码管显示数字0,那么我们可以设置{a,b,c,d,e,f,g}为“1111110”。

图2-5数码管示意图

2.5顶层模块设计方案

此模块为系统核心模块,大部分的功能都由此模块完成。

1)时钟模块

设计思路:

定义一个长度为24位的时钟显示缓存寄存器,每4位用BCD码来分别显示时分秒的个位,十位,每当1秒周期则秒个位加一,当秒个位为9时则清零,秒十位加一,当秒为59时清零,分加一,同理当分为59,秒为59时,分、秒清零,时加一,同理当时为23,分为59,秒为59时,时分秒清零。

完成时钟的设计。

2)键盘译码模块

设计思路:

定义1位寄存器sel,每当检测到sel信号则自加1,当sel为1时进入修改状态,为0则为时钟状态。

3)数据移位模块

设计思路:

定义3位寄存器flag,当flag不为0时,每当检测到“←”信号时,flag自减1,当flag不为5时,每当检测到“→”信号,flag自加1。

4)数据修改模块

设计思路:

当sel为1时,进入修改状态,检测flag的值,flag的值分别对应各将被修改的数据,如图2-6。

图2-6数据修改信号

检测键盘输入信号,若有0-9数字信号输入则将对应数字赋值给相应时钟显示缓存寄存器。

5)闪烁模块

设计思路:

当sel为1时,引入5Hz信号clkss,当clkss为1时,flag所对应数据输出信号为缓存数据,为0时对应数据电平将为高阻态不显示,这样可实现被修改数据会以5Hz的频率闪烁显示。

6)显示输出模块

设计思路:

将时钟显示缓存寄存器的数据赋值给输出管脚。

 

第三章系统程序设计

3.1分频器程序设计

在现代电子系统中,数字系统所占的比例越来越大。

系统发展的趋势是数字化和集成化,而CPLD/FPGA作为可编程ASIC(专用集成电路)器件,它将在数字逻辑系统中发挥越来越重要的作用。

在数字逻辑电路设计中,分频器是一种基本电路。

通常用来对某个给定频率进行分频,以得到所需的频率。

整数分频器的实现非常简单,可采用标准的计数器,也可以采用可编程逻辑器件设计实现。

本设计采用标准计数器来实现。

根据设计思路,本模块将66MHz信号分频成为250Hz,5Hz,1Hz三个输出信号,流程图如图3-1所示。

程序每当检测到内置时钟上升沿,计数寄存器1自加1,如果寄存器1等于999,则寄存器1置0,寄存器2自加1,如果寄存器2等于131,则clksy取反,寄存器3,寄存器4均自加1,寄存器2清零,Fs=fx/ns=50M/[(999+1)*(131+1)]=500,可得clksy每秒钟取反500次,即可得clksy=250Hz,图3-1分频程序流程图同理寄存器3和寄存器4每1/500秒自加1。

如果寄存器3等于249,则寄存器3清零,clk取反,根据以上结果可得clk每秒取反2次,即可得clk=1Hz。

如果寄存器3等于49,则寄存器4清零,clkss取反,根据以上结果可得clkss每秒取反10次,即可得clkss=5Hz。

根据以上思路,VerilogHDL程序如下:

moduleclkfs(clk,clkss,clksy,clk66MHz);

inputclk66MHz;outputclk,clkss,clksy;

regclk,clkss,clksy;reg[9:

0]count1;

reg[6:

0]count2;reg[7:

0]count3;

reg[5:

0]count4;regcin1,cin2;

always@(posedgeclk66MHz)

if(count1[9:

0]==10'd999)

begincount1[9:

0]=10'd0;

cin1=1'd1;//产生进位信号1

end

else

begincount1[9:

0]=count1[9:

0]+10'd1;

cin1=1'd0;//进位信号1清零

end

always@(posedgeclk66MHz)

if(count2[7:

0]==8'd131)

begincount2[7:

0]=8'd0;

clksy=~clksy;//clksy=250Hz

cin2=1'd1;//产生进位信号2

end

else

begincount2[7:

0]=count2[7:

0]+cin1;//若进位信号1为1则加1,为0则不变

cin2=1'd0;//进位信号2清零

end

always@(posedgeclk66MHz)

if(count3[7:

0]==8'd249)

begincount3[7:

0]=8'd0;

clk=~clk;//clk=1Hz

end

elsecount3[7:

0]=count3[7:

0]+cin2;//若进位信号2为1则加1,为0则不变

always@(posedgeclk66MHz)

if(count4[5:

0]==6'd49)

begincount4[5:

0]=6'd0;

clkss=~clkss;//clkss=5Hz

end

elsecount4[5:

0]=count4[5:

0]+cin2;

endmodule

3.2行列式键盘程序设计

相对if语句只有两个分支而言,else语句是一种多分支语句,故case语句多用于条件译码电路,本设计的行列式键盘模块采用case语句键盘译码。

利用250Hz信号扫描X轴和Y轴电位信号,当某根X连接线和Y连接线同时为低电平时有效。

键盘去抖功能:

按键在闭合和断开时,触点会存在抖动现象,本设计采用250Hz低频信号,触发判定为clk信号上升沿和下降沿,也就是在40ms时间内会有两次判定,如果两次判定均为同一键位,则输出键值,否则输出为0,可以消除触点抖动的负面作用。

示意图如下:

图3-2去抖示意图

图示为两次按键,第一次按键时间极短,可视为一次抖动,第二次为正常按键(时间较长,可以是多个CLK周期,图示只列出1个周期),现分析如下:

图示1处:

读取key1为低;图示2处:

读取key2为高;结果:

key为0,判定无按键。

图示1处:

读取key1为低;图示2处:

读取key2为低;结果:

key为对应键位值,判定有按键。

定做各专业论文,如需全文可联系QQ2438635173

程序如下:

modulekeypad(clksy,x,y,key);//clksy=64hz

inputclksy;

input[3:

0]x,y;//4*4key,lowactive

output[5:

0]key;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2