版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
***********大学课程设计报告设计名称:3位数字频率设计姓名:学号:专业班级:院(系):物电学院设计时间:2012年12月5日至10日设计地点:指导教师评语:成绩:签名:年月日目录题目:3位数字频率计1页数字频率计的功能……………………1页数字频率计的设计思路………………1页硬件资源概述…………1~5页各模块的VHDL语言描述与实现……5~13页仿真模拟图……………13~15页六、软件硬件结合实现………………15~17页仿真及调试心得…………17页总结……………………17页3位数字频率计设计数字频率计的功能我设计的是3位数字频率计,用3个十进制数字显示式频率,其频率范围为1MHz。有五个档位,并能自动换档。五个档的具体功能是:1、计数溢出档,当频率计数超过量程时,自动显示溢出标--"-1.-1.-1";2、1MHz档,显示000到999,默认单位为1KHz;3、100KHz档,显示00.0到99.9,默认单位为1KHz;4、10KHz档,显示0.00到9.99,默认单位为1KHz;5、测周档,当所测频率小于0.99KHz时,显示数值变为周期,以毫秒为默认单位。数字频率计的设计思路1、时基的设计在测频时,输入信号的频率大于频率计提供的基准频率,所以这时以频率计提供的基准频率信号为时基,输入信号为时钟信号,在频率计提供的基准信号周期里,计算输入信号的周期数,再乘以频率计的基准频率,就是输入信号的频率值。测周时,输入信号的频率小于频率计提供的基准频率信号,所以要以频率计提供的基准频率信号为时钟信号,以输入信号为时基信号,在输入信号周期内,计算频率计提供的基准信号的周期数,再乘以基准频率的周期值,就是输入信号的周期值。输入信号是未知的,所以要求其自动调档,当测频为10KHz档时,提供时基应该是0.01KHz的脉冲。当测频为100KHz档时,提供的时基为0.1KHz的脉冲。当测频为1MKHz时,提供的时基为1KHz。用一分频器对50MHz的晶振进行分频得到1KHz的脉冲。然后用一个有100个状态状态机实现持续1ms、10ms、100ms的高电平即不同档位的闸门信号,状态机用1KHz的脉冲信号触发,产生1ms的高电平,只需在状态99的时候产生高电平,状态100时回到高电平;产生10ms的高电平,只需在状态90的时候产生高电平,在状态100的时候回到低电平。产生100ms的高电平,则需在状态为1前的一个状态产生高电平,直到状态100的时候回到低电平。在100个状态中,有很多状态的功能是相同的,可以将它们合并。计数器的设计各个档位之间的转换应遵循设计要求,要根据在时基有效时间内的计数值进行判断。计数器可以定义成一个整形信号,这样计数器加1就非常方便,要显示计数的数值,直接用三位数码管动态扫描实现显示个位、十位、百位。这样显示就要求计数器遵循加法逢十进一的规则。然后在不同的档位,小数点的位置不同,所以小数点的显示要以所在档位为判断条件。3、模块划分可以将计数器跟七段译码器设计成单独的模块,这样更省资源,利用率更高。硬件资源概述A、EP1C12核心板EP1C12核心板为基于AlteraCyclone器件的嵌入式系统开发提供了一个很好的硬件台,它可以为开发人员提供以下资源:1、主芯片采用AlteraCyclone器件EP1C12F324C82、EPCS4I8配置芯片3、4个用户自定义按键4、4个用户自定义LED5、1个七段码LED6、标准AS编程接口和JTAG调试接口7、50MHz高精度时钟源8、三个高密度扩展接口9、系统上电复位电路10、支持+5V直接输入,板上电源管理模块系统主芯片采用324引脚、BGA封装的E1C12FPGA,它拥有12060个LE,52个M4K片上RAM(共计239616bits),2个高性能PLL以及多达249个用户自定义IO。B、FPGA开发板FPGA开发平台提供了丰富的资源供学生或开发人员学习使用,资源包括接口通信、控制、存储、数据转换以及人机交互显示等几大模块,接口通信模块包括SPI接口、IIC接口、VGA接口、RS232接口、USB接口、PS2键盘/鼠标接口、1-Wire接口等;存储模块包括EEPROM存储器模块等;数据转换模块包括串行ADC、DAC以及音频CODE等;人机交互显示模块包括8个按键、16个LED发光二极管显示、1602字符型点阵LCD、8位动态7段码管、实时时钟、SD卡等。上述的这些资源模块既可以满足初学者入门的要求,也可以满足开发人员进行二次开发的要求。EDA/SOPC实验开发平台提供的资源有:1、标准配置核心板为EP1C12核心板(核心芯片为EP1C12F324C8)。可更换EP2C20F484C8等其它核心板。2、1602字符型液晶点阵。3、RTC,提供系统实时时钟。4、1个256色VGA接口。5、1个标准串行接口。6、1个USB设备接口,利用PDIUSBD12芯片实现USB协议转换。7、基于SPI或IIC接口的音频CODEC模块。8、1个蜂鸣器输出模块。9、2个PS2键盘/鼠标接口。10、串行ADC和串行DAC模块。11、IIC接口的EEPROM存储器模块。12、基于1-Wire接口的数字温度传感器。13、8位动态七段码管LED显示。14、16个用户自定义LED显示,8个用户自定义按键输出。15、一个SD卡接口模块。16、扩展接口,供用户高速稳定的自由扩展。开发板的系统平台功能图如下:图1-2FPGA系统平台功能框图EP1C12与开发平台硬件资源I/O接口对照表信号名称EP1C12IO接脚信号名称EP1C12IO接脚FPGA开发板液晶显示模块RSE3D3R1RWD4D4M6ED3D5L6D0F5D6N7D1P3D7N6D2E5FPGA开发板16位LED灯显示模块D1L14D9T7D2M14D10P7D3N14D11T6D4N13D12P6D5P12D13T5D6N12D14R6D7P10D15N5D8P9D16R5FPGA开发板八位七段数码管显示模块AN4GK5BG4DPH3CH4SEL0M4DL5SEL1F3EL4SEL2F4FK4FPGA开发板8位按键开关模块S1R16S5N16S2P14S6N15S3P16S7M16S4P15S8M15EDA/SOPC开发平台RTC实时时钟模块SCLKE14RETF16IOG14EDA/SOPC开发平台数字温度传感器模块CLK/DATT4各模块的VHDL语言描述及实现1、计数器模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityfrequencyis port(treset:instd_logic; tclk:instd_logic; tsig:instd_logic; tkeep1:outstd_logic_vector(3downto0); tkeep2:outstd_logic_vector(3downto0); tkeep3:outstd_logic_vector(3downto0)); endentityfrequency; architectureoneoffrequencyissignaltcou1:std_logic_vector(3downto0);signaltcou2:std_logic_vector(3downto0);signaltcou3:std_logic_vector(3downto0); beginctrcou:process(treset,tclk) begin iftreset='0'then tcou1<="0000";tcou2<="0000";tcou3<="0000"; else iftclk'eventandtclk='1'then iftsig='1'then iftcou3="1010"then tcou3<="1010"; else iftcou1="1001"andtcou2="1001"andtcou3="1001"then tcou1<="0000";tcou2<="0000";tcou3<="1010"; elsiftcou1="1001"andtcou2="1001"then tcou1<="0000";tcou2<="0000";tcou3<=tcou3+1; elsiftcou1="1001"then tcou1<="0000";tcou2<=tcou2+1; elsetcou1<=tcou1+1; endif; endif; else tcou1<="0000";tcou2<="0000";tcou3<="0000"; endif; endif; endif; endprocessctrcou;oputctr:process(treset,tsig) begin iftreset='0'then tkeep1<="0000";tkeep2<="0000";tkeep3<="0000"; else iftsig'eventandtsig='0'then tkeep1<=tcou1; tkeep2<=tcou2; tkeep3<=tcou3; endif; endif; endprocessoputctr;endone;2、7段译码器模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitydisplay1is port(data_in:instd_logic_vector(3downto0); clk1k:instd_logic; del:outstd_logic_vector(1downto0); data_out:outstd_logic_vector(6downto0)); endentitydisplay1;architectureoneofdisplay1issignalindata:std_logic_vector(3downto0);beginprocess(clk1K)--数码管动态扫描variabledount:std_logic_vector(1downto0);beginifclk1k'eventandclk1k='1'then--检测时钟上升沿ifdount="10"thendount:="00";elsedount:=dount+1;--计数器dount累加endif;endif;del<=dount;endprocess; process(data_in) begin indata<=data_in; caseindatais when"0000"=>data_out<="1111110"; when"0001"=>data_out<="0110000"; when"0010"=>data_out<="1101101"; when"0011"=>data_out<="1111001"; when"0100"=>data_out<="0110011"; when"0101"=>data_out<="1011011"; when"0110"=>data_out<="1011111"; when"0111"=>data_out<="1110000"; when"1000"=>data_out<="1111111"; when"1001"=>data_out<="1111011"; whenothers=>data_out<="0110001"; endcase;endprocess;endone;频率计综合设计libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitydfreisport(reset:instd_logic; clk:instd_logic;-- testsignal:instd_logic; display:outstd_logic_vector(6downto0); del1:outstd_logic_vector(1downto0); unit:outstd_logic; d:outstd_logic);endentitydfre;architectureoneofdfreistypestateis(start,judge,count1,count2to89,count90,count91to98,count99,count100);signalmyfre:state;signalfrecou:integerrange0to100;signalclklk:std_logic;signalclkl0k:std_logic;signalcoulk:integerrange0to9999;signalenfre:std_logic;signalflag:std_logic_vector(2downto0);signalkeepcou1:std_logic_vector(3downto0);signalkeepcou2:std_logic_vector(3downto0);signalkeepcou3:std_logic_vector(3downto0);signalttclk:std_logic;signalttsig:std_logic;signals:std_logic_vector(1downto0);signaljishu:std_logic_vector(3downto0);signaldot:std_logic_vector(2downto0);signaltestsignal:std_logic;componentdisplay1isport(data_in:instd_logic_vector(3downto0);clk1k:instd_logic; del:outstd_logic_vector(1downto0); data_out:outstd_logic_vector(6downto0));endcomponent;componentfrequencyisport(treset:instd_logic; tclk,tsig:instd_logic; tkeep1:outstd_logic_vector(3downto0); tkeep2:outstd_logic_vector(3downto0); tkeep3:outstd_logic_vector(3downto0));endcomponent;beginPROCESS(clk)--产生1Khz信号variablecnt1:INTEGERRANGE0TO49999;BEGINIFclk='1'ANDclk'eventTHENIFcnt1=49999THENcnt1:=0;ELSEIFcnt1<25000THENclklk<='1';ELSEclklk<='0';ENDIF;cnt1:=cnt1+1;ENDIF;ENDIF;endprocess;PROCESS(clk)--产生被测信号variablecnt10:INTEGERRANGE0TO3999999;BEGINIFclk='1'ANDclk'eventTHENIFcnt10=3999999THENcnt10:=0;ELSEIFcnt10<2000000THENclkl0k<='1';ELSEclkl0k<='0';ENDIF;cnt10:=cnt10+1;ENDIF;ENDIF;testsignal<=clkl0k;endprocess;ctrdot:process(flag)--控制小数点显示进程begincaseflagis when"000"=>dot<="000"; when"001"=>dot<="100"; when"010"=>dot<="010"; when"011"=>dot<="001"; whenothers=>dot<="111";endcase;endprocessctrdot;ctrfre:process(reset,clklk)--用于产生时基的状态机beginifreset='0'then frecou<=0;enfre<='0';flag<="000";myfre<=start;else ifclklk'eventandclklk='1'then casemyfreis whenstart=>frecou<=0;enfre<='0';flag<="011";myfre<=judge; whenjudge=> ifflag="000"then--标志位0 ifkeepcou3="0000"andkeepcou2="0000"andkeepcou1="0000"then flag<="001";enfre<='1'; elseflag<="000"; endif; elsifflag="100"then--标志为4 ifkeepcou3="1010"then flag<="100"; elseflag<="011"; endif; elsifflag="010"then--标志为2 ifkeepcou3<"0001"then flag<=flag-1; enfre<='1'; elsifkeepcou3="1010"then flag<=flag+1; elseflag<=flag; endif; elsifflag="001"then--标志为1 ifkeepcou3<"0001"then flag<=flag-1; elsifkeepcou3="1010"then flag<=flag+1; elseflag<=flag; enfre<='1'; endif; else--标志为3 ifkeepcou3<"0001"then flag<=flag-1; elsifkeepcou3="1010"then flag<=flag+1; elseflag<=flag; endif; endif; myfre<=count1; whencount1=>--处于计数状态1 ifflag="001"orflag="000"then enfre<='1'; elseenfre<=enfre; endif; frecou<=1; myfre<=count2to89; whencount2to89=>--处于计数状态2-89 iffrecou=88then frecou<=89; myfre<=count90; elsefrecou<=frecou+1; myfre<=count2to89; endif; whencount90=>--处于计数状态90 ifflag="010"then enfre<='1'; elseenfre<=enfre; endif; frecou<=90; myfre<=count91to98; whencount91to98=>--处于计数状态91-98 iffrecou=97then frecou<=98; myfre<=count99; elsefrecou<=frecou+1; myfre<=count91to98; endif; whencount99=>--处于计数状态99 ifflag="011"orflag="100"then enfre<='1'; elseenfre<=enfre; endif; frecou<=99; myfre<=count100; whencount100=>--处于计数状态100 frecou<=99; enfre<='0'; myfre<=judge; whenothers=>null; endcase;endif;endif;endprocessctrfre;ctrtt:process(reset,flag)beginifreset='0'then ttclk<='0';ttsig<='0';unit<='0';else ifflag=0thenttclk<=clklk;ttsig<=testsignal;unit<='1';elsettclk<=testsignal;ttsig<=enfre;unit<='0'; endif;endif;endprocessctrtt;process(clklk)beginif(clklk'eventandclklk='1')then if(s="10")then s<="00"; elses<=s+1; endif;endif;endprocess;process(s)begin casesis when"00"=>jishu<=keepcou1;d<=dot(0); when"01"=>jishu<=keepcou2;d<=dot(1); when"10"=>jishu<=keepcou3;d<=dot(2); whenothers=>null; endcase;endprocess;c1:frequencyportmap(reset,ttclk,ttsig,keepcou1,keepcou2,keepcou3);dis:display
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人工智能在证券市场预测中的应用-第60篇
- 2025年基金销售业务考试笔试试题(含答案解析)
- 人工智能在银行反欺诈技术中的应用-第4篇
- 人工智能在银行风控中的应用-第549篇
- ISO 13063-12022 电动轻便摩托车和摩托车.安全规范.第1部分车载可充电能量储存系统(RESS)标准立项发展报告
- ISO 10140-12021 声学建筑构件隔声的实验室测量第1部分特定产品的应用规则标准立项发展报告
- ISO 6363-22022 锻铝和铝合金.冷拔棒材 管材和线材.第2部分机械性能标准立项发展报告
- 2027年西安翠华山职业学院高职单招职业技能考试题库附答案详解
- 2026年博鳌文旅职业学院高职单招职业技能考试模拟试卷带答案详解(A卷)
- 2024年保定府河职业学院高职单招职业技能考试模拟试卷及答案详解【各地真题】
- 2025年子宫颈机能不全临床诊治中国专家共识解读
- 6《会摇尾巴的狼》 公开课一等奖创新教学设计
- 水利水电工程混凝土防渗墙施工技术规范
- 2025-2026学年冀少版八年级生物上册知识点总结
- 无锡科技馆新建设方案
- 科普大气压教学课件
- 云桌面技术分享
- 《复合材料电缆沟盖板》编制说明
- 2026年高考北京卷文综地理考试题目及答案
- 奖项申报委托协议书
- 2025年西安交通大学财务处招聘(4人)笔试考试参考试题及答案解析
评论
0/150
提交评论