欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于FPGA的通用外设电路设计-毕业设计论文.doc

    • 资源ID:88906027       资源大小:682KB        全文页数:42页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于FPGA的通用外设电路设计-毕业设计论文.doc

    毕业设计(论文)题 目:基于FPGA的通用外设电路设计英文题目:Design of Universal Peripheral Circuit Based on FPGA东华理工大学毕业(设计)论文 摘 要摘 要FPGA器件作为可编程逻辑主流硬件,近年来,应用越来越广泛,在现代科学技术中占有举足轻重的作用和地位。其外设电路作为芯片与外界输入方式之一,是十分具有研究价值的。FPGA器件不断增加新的模块,功能越来越强大,基于FPGA的外设电路也顺应形势,不断升级。本设计综合行列式键盘、LED显示器、时钟一体,应用Verilog HDL语言实现下述功能:计时功能,包括时分秒的计时;校时功能:对时分秒手动调整以校准时间;键盘功能:应用4*4行列式键盘,可实现0-9数字的直接输入;LED动态扫描显示和闪烁,移位,灭零等功能,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过Altera Quartus8.0完成综合、仿真。本设计实现以上FPGA各功能,可作为EDA技术发展的价值体现。此程序通过下载到FPGA芯片后,可应用于实际的数字钟显示中。关键字:行列式键盘、LED显示器、时钟、Verilog HDL。东华理工大学毕业(设计)论文 AbstractABSTRACTFPGA programmable logic devices, as the mainstream of hardware, in recent years, more and more extensive applications in modern science and technology plays a vital role and status. Its peripheral circuit chip with the outside world as one of input is very valuable in research. FPGA devices are constantly adding new modules, more powerful, FPGA-based response to the peripheral circuit is also the situation escalated.The determinant of the design of an integrated keyboard, LED display, integrated clock, application Verilog HDL language to achieve the following functions: time functions, including the time when minutes and seconds; school functions: every minute of time to manually adjust the calibration time; keyboard functions: application of 4 * 4 determinant keyboard, numbers 0-9 can be directly imported; LED dynamic scanning display and blinking, shift, such as anti-zero function, highlights the hardware description language as a good readability, easy to understand the advantages of portability, and Altera Quartus 8.0 through the completion of synthesis, simulation. FPGA Design and Implementation of the above various functions, can be used as the value of EDA technology embodied. This process by downloading to the FPGA chip can be used in practical digital clock display.Keywords: determinant keyboard, LED display, clock, Verilog HDL.东华理工大学毕业(设计)论文 目 录目 录引 言1第一章 系统硬件及设计软件介绍21.1 开发板介绍21.2 设计软件介绍3第二章 系统方案设计42.1 总设计方案42.2 分频器设计方案42.3 行列式键盘设计方案52.4 六位7段LED显示设计方案62.5 顶层模块设计方案7第三章 系统程序设计83.1 分频器程序设计83.2 行列式键盘程序设计103.3 六位7段LED显示程序设计123.4 顶层模块程序设计13第四章 程序仿真204.1 分频器程序仿真204.2 行列式键盘程序仿真204.3 六位7段LED显示程序仿真214.4 顶层模块程序仿真22结 论25致 谢27参考文献28附录1 分频器程序29附录2 行列式键盘程序31附录3 六位7段LED显示程序33附录4 顶层时钟程序3538东华理工大学毕业(设计)论文 引 言引 言计算机技术和微电子工艺的发展,使得现代数字系统的设计和应用进入了新的阶段。电子设计自动化(EDA)技术在数字系统设计中起的作用越来越重要,新的工具和新的设计方案不断推出,可编程逻辑器件不断增加新的模块,功能越来越强,硬件设计语言也顺应形式,推出新的标准,更加好用,更加便捷。本设计主要以FPGA器件、EDA软件工具、Verilog HDL硬件描述语言三方面内容作为主线,综合行列式键盘,LED显示器件,以及时钟模块于一体,实现三个主要模块的联动,输入部分为4*4行列式键盘,具备0-9十个数字键、修改/确认键、左右移动键,输出数据为6位二进制代码,输出部分为六位7段LED数码管,可实现时分秒显示,时钟灭零显示,修改闪烁以及小数点秒闪烁功能。而顶层文件时钟模块则将输入输出部分联结起来,实现时钟发生,显示缓存,数据修改,移位,灭零等功能。另时钟产生模块采用FPGA硬件内置66MHz分频,产生250Hz,5Hz,1Hz信号供时钟模块,输入输出模块使用。本设计完全采用Verilog HDL语言完成,此程序通过下载到FPGA芯片后,可应用于实际的数字钟显示中。东华理工大学毕业(设计)论文 第1章 系统硬件及设计软件介绍第一章 系统硬件及设计软件介绍1.1 开发板介绍本设计需要的硬件资源主要有:1、六位七段数码管2、4*4行列式键盘经过仔细筛选,最终选定联华众科FPGA开发板FA130。联华众科FPGA开发板FA130核心器件为 Altera Cyclone系列的EP1C3,配置芯片为EPCS1,FA130上可以运行SOPC Builder制作的简单的工程。FA130具有丰富的板载资源,由于板载有51单片机,FA130还可以作为51单片机的学习开发板。FA130实现了3.3V系统与5V系统对接功能,具体是通过74LVXC3245(或简称3245)实现的。FA130随板资料中包括丰富的开发实例和制作开发实例的详细步骤说明,以及Quartus II环境下的设计输入,综合,仿真等内容,另外还包括SOPC建立和开发方面内容,如Nios II的建立和Nios II环境下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-1 FA130开发板联华众科FPGA开发板FA130具有丰富的板载资源。核心器件包括FPGA芯片Altera EP1C3T100和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的复位门限(Reset Threshold)为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公司的Quartus II软件,版本为8.0。Altera Quartus II设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。工程师使用同样的低价位工具对 Stratix FPGA进行功能验证和原型设计,又可以设计HardCopy Stratix器件用于批量成品。系统设计者现在能够用Quartus II软件评估HardCopy Stratix器件的性能和功耗,相应地进行最大吞吐量设计。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。东华理工大学毕业(设计)论文 第2章 系统方案设计第二章 系统方案设计设计要求: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 行列式键盘设计方案行列式键盘的工作方式是读取行列线的状态,查看是否有按键按下。键盘部分提供一种扫描的工作方式,能对键盘不断扫描、自动消抖、自动识别按下的键,并给出编码,能对双键或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-1 LED真值表abcdefg输出111111000110000111011012111100130110011410110115101111161110000711111118111101192)动态扫描显示动态扫描的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章 系统程序设计第三章 系统程序设计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。根据以上思路,Verilog HDL程序如下:module clkfs(clk,clkss,clksy,clk66MHz); input clk66MHz; output clk,clkss,clksy;reg clk,clkss,clksy; reg9:0 count1;reg6:0 count2; reg7:0 count3;reg5:0 count4; reg cin1,cin2;always (posedge clk66MHz)if(count19:0=10'd999)begin count19:0=10'd0; cin1=1'd1;/产生进位信号1endelse begin count19:0=count19:0+10'd1; cin1=1'd0;/进位信号1清零endalways (posedge clk66MHz)if(count27:0=8'd131)begin count27:0=8'd0; clksy=clksy; /clksy=250Hz cin2=1'd1;/产生进位信号2endelse begin count27:0=count27:0+cin1;/若进位信号1为1则加1,为0则不变 cin2=1'd0;/进位信号2清零endalways (posedge clk66MHz)if(count37:0=8'd249)begin count37:0=8'd0; clk=clk; /clk=1Hzendelse count37:0=count37:0+cin2;/若进位信号2为1则加1,为0则不变always (posedge clk66MHz)if(count45:0=6'd49)begin count45:0=6'd0; clkss=clkss; /clkss=5Hzendelse count45:0=count45:0+cin2;endmodule3.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为对应键位值,判定有按键。程序如下:module keypad(clksy,x,y,key); /clksy=64hzinput clksy;input3:0 x,y; /4*4 key ,low activeoutput5:0 key;reg5:0 key1,key2;always (posedge clksy) /第一次判定begincase(y3:0,x3:0)8'b00010001:key15:0=6'd1;8'b00010010:key15:0=6'd2;8'b00010100:key15:0=6'd3;8'b00011000:key15:0=6'd4;8'b00100001:key15:0=6'd5;8'b00100010:key15:0=6'd6;8'b00100100:key15:0=6'd7;8'b00101000:key15:0=6'd8;8'b01000001:key15:0=6'd9;8'b01000010:key15:0=6'd10;8'b01000100:key15:0=6'd16;8'b01001000:key15:0=6'd32;8'b10001000:key15:0=6'd48;default:key15:0=6'd0; /输出结果寄存在key1endcaseendalways (negedge clksy) /第二次判定begincase(y3:0,x3:0)8'b00010001:key25:0=6'd1; /键位18'b00010010:key25:0=6'd2; /键位28'b00010100:key25:0=6'd3; /键位38'b00011000:key25:0=6'd4; /键位48'b00100001:key25:0=6'd5; /键位58'b00100010:key25:0=6'd6; /键位68'b00100100:key25:0=6'd7; /键位78'b00101000:key25:0=6'd8; /键位88'b01000001:key25:0=6'd9; /键位98'b01000010:key25:0=6'd10; /键位08'b01000100:key25:0=6'd16; /键位8'b01001000:key25:0=6'd32; /键位8'b10001000:key25:0=6'd48; /键位seldefault:key25:0=6'd0;/输出结果寄存在key2endcaseendassign key=(key1=key2)?key1:6'd0; /判定 如果两次结果相同 则输出为/键值 如果不同 则输出为0endmodule3.3 六位7段LED显示程序设计联华众科FPGA开发板FA130的数码显示为六位7段共阴极数码管,其工作特点是,当笔段电极接高电平,公共阴极接低电平时,相应笔段发光。本模块同时具有片选,七段译码,灭零功能。本模块由250Hz信号驱动,采用动态显示方法,即对六个LED数码管循环扫描。分时使用显示器驱动电路。可得每个数码管显示频率为250/642Hz,人眼视觉暂留时间的要求为25帧每秒,可达到要求。程序如下:module xianshi(clksy,a,b,c,d,e,f,g,D0,D1,D2,D3,D4,D5,num0,num1,num2,num3,num4,num5);input clksy;input3:0 num0,num1,num2,num3,num4,num5; /num0-num5为时分秒6位输入output a,b,c,d,e,f,g,D0,D1,D2,D3,D4,D5; /a-g为数码管7段电平reg a,b,c,d,e,f,g,D0,D1,D2,D3,D4,D5; /D0-D5为片选信号reg3:0 num10,num11,num12,num13,num14,num15;reg3:0 temp;reg2:0 flag;always(posedge clksy) beginD0,D1,D2,D3,D4,D5=6'b000000;if(flag=6) flag=0;else flag=flag+1;num10,num11,num12,num13,num14,num15=num0,num1,num2,num3,num4,num5;if(num15=0) /首位灭零num15=4'bzzzz;case(flag)/片选0:begin temp=num10;D0=1;end1:begin temp=num11;D1=1;end2:begin temp=num12;D2=1;end3:begin temp=num13;D3=1;end4:begin temp=num14;D4=1;end5:begin temp=num15;D5=1;enddefault:temp=0;endcasecase(temp) /七段译码 4'd0:a,b,c,d,e,f,g=7'b1111110; /显示数字0 4'd1:a,b,c,d,e,f,g=7'b0110000; /显示数字1 4'd2:a,b,c,d,e,f,g=7'b1101101; /显示数字2 4'd3:a,b,c,d,e,f,g=7'b1111001; /显示数字3 4'd4:a,b,c,d,e,f,g=7'b0110011; /显示数字4 4'd5:a,b,c,d,e,f,g=7'b1011011; /显示数字5 4'd6:a,b,c,d,e,f,g=7'b1011111; /显示数字6 4'd7:a,b,c,d,e,f,g=7'b1110000; /显示数字7 4'd8:a,b,c,d,e,f,g=7'b1111111; /显示数字8 4'd9:a,b,c,d,e,f,g=7'b1111011; /显示数字9 default:a,b,c,d,e,f,g=7'b0000000; /无任何显示endcaseendendmodule3.4 顶层模块程序设计根据设计思路,画出流程图,见3-3。程序是无限循环,也就是到了流程图结束的地方后又会回到开始,程序首先判定是否有键按下,如果有,则判定键值:若键值为或移动键,则会修改flag的值,有前文所述,flag的值代表时分秒的个、十位;若键值为Sel修改键,则会改变sel寄存器的值,设计需求是按一次Sel键将会进入修改状态,再按一次将退出修改状态,方案为设定sel寄存器为1位。程序接下来会判断sel的值,如果为1则进入修改状态,为零则进入计时状态。 在修改状态下,程序再次判定键值,若为数字键,则会将对应数据赋值给flag所对应缓存,若为或移动键,则会修改flag的值,若为Sel修改/确认键,将退出修改状态。图3-3 顶层模块设计流程图在计时状态,程序将逐秒对秒缓存加1,判断:若秒低位为9,则秒低位清零,秒高位加一;判断:若秒高位为5,则秒高位清零,分低位加一;判断:若分低位为9,则分低位清零,分高位加一;判断:若分高位为5,则分高位清零,时低位加一;判断:若时低位为9,则时低位清零,时高位加一;判断:若时高低位为23,则时清零。程序到这里还没有结束,关于修改位闪烁的方案,我将它和输出管脚赋值整合在一起,首先判定是否为修改状态,若是,则将该修改数据和5Hz频率相与再赋值给输出管脚,当5Hz频率为高电平,输出缓存数据,反之则无输出信号,这样可实现被修改字符出现频率为5Hz的闪烁。程序如下:module clock(clkss,key,sec,min,hour);input clkss;input5:0 key;reg sel;reg2:0 flag1,sumsec;output7:0 sec,min,hour;wire7:0 sec,min,hour; reg23:0 sum;reg seccin,cinsec,cinmin,ss0,ss1,ss2,ss3,ss4,ss5;initial flag1=3'd0;always(posedge clkss)beginif(key=6'd48) sel=sel+1'd1;/如果为Sel键 将在修改/确认间切换else if(key=6'd16) /如果为键 begin if(!flag1) flag1=flag1-3'd1; /如果flag不为0 ,那么flag减1 endelse if(key=6'd32) /如果为键 begin if(flag1=5) flag1=3'd5;/如果flag等于5 ,flag值不变 else flag1=flag1+3'd1;/否则flag加1 endendalways(posedge clkss) /这段语句将5Hz信号分频成为1Hz时钟信号begin if(sumsec2:0=3'd4)begin sumsec2:0=3'd0; seccin<=1;endelse begin sumsec2:0=sumsec2:0+3'd1; seccin<=0;endendalways(posedge clkss)begin if(sel)/判定是否为修改状态begin if(flag1=0) begin if(key=6'd10) sum3:0=4'd0; /零键位的识别 else sum3:0=key3:0?key3:0:sum3:0; /key低四位不为零则赋值 end else if(flag1=1) begin if(key=6'd10) sum7:4=4'd0; else sum7:4<=key3:0?key3:0:sum7:4; endendelse if(seccin) beginif(sum3:0=4'd9)begin sum3:0=4'd0;if(sum7:4=4'd5)begin sum7:4<=4'd0; cinsec<=1;endelse begin sum7:4<=sum7:4+4'd1; cinsec<=0;endendelse begin sum3:0=sum3:0+seccin; cinsec<=0;endendendalways(posedge

    注意事项

    本文(基于FPGA的通用外设电路设计-毕业设计论文.doc)为本站会员(教****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开