版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FPGA4位十进制频率计4位十进制频率计一、设计目的用Verilog HDL语言设计一个能实现自动测频的4位十进制频率计。1)测量范围:1Hz9999Hz2)测量的数值通过4个数码管显示3)频率超过9999Hz时,溢出指示灯亮,可以作为扩大测量范围的接口。二、设计原理1、若某一信号在T秒时间里重复变化了 N次,则根据频率的定义可知该 信号的频率fs为:fs=N/To2、当T=ls时,N就是测得的频率。3、根据以上所提出的方法,测定信号的频率必须有一个脉宽为1秒的对 输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号 和为下一测频计数周期作准备的计数器复位信号。这个复位信号可
2、以由一个测 频控制信号发生器产生,即图1中的TESTCTL,它的设计要求是,TESTCTL 的计数使能信号CNT.EN能产生一个1秒脉宽的周期信号,并对频率计的每一 计数器CNT10的EN使能端进行同步控制。当CNT_EN高电平时,允许计数; 低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,每0.01ms锁存 器进行一次锁存,并由数码管显示计数值。设置锁存器是为了使显示的数据稳 定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信 号RST-CNT对计数器进行清零,为下1秒钟的计数操作准备。图1原理图三、设计步骤1、新建cym工程文件。图2建立工程由于是用VHDL语言进
3、行设计,所以此处选择类型为HDL。之后一直点击确 认即可。图3芯片信息配置由于我们所采用的板子为RCXQ208JV5 FPGA开发板,所以配置如图所示。1、新建各个分模块并输入代码。Hierarchy回 cym2EJ- O xc3s500e-5pq20&回品:counter0 (counterOw):|7| div_fre (divjre.v)V| latch (latch.v)7| seg-display (seg-display.v)3 test_ctl (test_ctl.v)建立VHDL文件2、建立顶层文件为原理图型,例化各个模块并连接。建立VHDL文件3、对设计进行综合,如果
4、出现错误,根据提示改正。Processes: stopwatch£Design Summary/Reports0 Design Utilities第 User Constraints 由Synthesize - XST !+n ()0 Implement DesignGenerate Programming File由 雕 Configure Target Device 铲 Analyze Design Using ChipSc.图6综合黄色感叹符号代表有警告,有些警告可以忽略,绿色小勾表示综合成功。4、建立测试文件并进行仿真,验证设计。Soar" Typ*Select s
5、ource tyre, file nane aa«l its location.国 BMM File铲 ChipScopc Dcfinitior ond Connection File Implementator Constraints FileIP (CORE Generator & Architecture Wizard) 闻 MEM File |7| Schematic *=| User Document可 Verilog Module 7| Verilog Test Fixture 阳 VHDL Module 通| VHDL Library 回 VHDL Packag
6、e % VHDL W Bench 尢 Embedded Processor?il« not e/Ti_taztjLocAticnIkUiLir比睫Ftoject'cyrC. .? Add t。pr&jcctNew Source WizardXHora Info> Caneal图7建立激励文件之后一直点击确认即可。为了结合我们的下载板子的时钟信号,在测试文件中设置时钟单位为10ns, 精度为Ips,如图:1 'rimescale 10ns / Ips23 (todule 3Copwatcli_rest;图8设置时钟单位仿真文件应验证个端口的正确性。由于时钟
7、单位为10ns,所以CLK_50M每 一个仿真时间单位翻转一次即可产生一个50M的时钟信号。开始时进行一次复 位,使各寄存器初值正确。controLport端为数码管位扫描端,所以其值一直在 1110110110110111循环。data_out端为数码管显示的数字对应的七段数码 管的二进制数据,它的值可以与controLport端对应到一起观察,转换为对应的十进制数据即是1110、1101、1011、0111对应的data端的信号由09循环。对测试文件进行检查,出现绿色小勾表示无语法错误,可以进行仿真。Processes: stopwatch_test白 # ISim Simulatorg
8、Q© Behavioral Check Syntax翩 Simulate Behavioral Model图95、根据板子锁定引脚,并生成下载文件。下载板有两个时钟输出引脚,一个为40M的,一个为50M的。本设计采用 的是50M,所以CLK_50M引脚锁定为引脚P80,即net "CLK0M" loc = p80。 CLR复位端连接一个轻触开关,为P57,即net "CLR" loc = p57。CARRY_0UT溢 出标志端用一个LED灯来表示,net *CARRY_0UT* loc = p220下载板数码管引脚 图如图所示:TUBE_EN(
9、0.7)>TUBEEN1TUBEEN2TUBEEN3TUBEEN4TUBEEN5TUBEEN6TUBEEN7TUBE ENOTUBE_D0.7)KTUBE_D0VTUBED1VTUBE D2TUBE D3TUBE D4TUBE D5TUBE D6TUBE D71323恬湾七碗DA,mGNDINHH OttLYINPUT 1TUBE 1N1TUBE EN2127TU6E_EN3,26TUBE EN4P3.3V124INPVT OttLYINPUT 0口TUBE 小5122TUBE EN6GNDTUBE EN7lig11gINEHH (XiLYift117P1.2V11gLCD16O2 RS
10、MSLCD16O2 RWP3.3VLti)1602ELCD16O2D&TUBE D4P2.5VitnINPOT OWLYKEY LINE6LCD16O2D3TUBE D3maLCD16O2D7TUBE D7m?LCD16O2D2TUBE D2106LCD16O206TUBE D6czn, J ' J LCD16O2 D1TUBE 01LCD16O2 DSTUBE D51MLKEY IIME5 INPVT ONLYfOtLCD16O2 DOTUBE 00102图10数码管端口图由图可知data端和control_port端的引脚应该分别锁定为:net "data_out
11、0“ loc = pl02;net "data_out1“ loc = p99;net "data_out net "data_out net "data_out net "data_out net "data_out net "data_outloc 二 pl07;loc 二 pl09;loc 二 pll2; loc = plOO; loc = pl06; loc 二 pl08;net net net net net netcontroljport0” controljport11” controljport2” “con
12、trol_port3” controljport4” “corrtrol_port 5”loc loc loc loc loc loc=pl27;=pl28;=pl29;二 P132;=pl20;=pl22;验证CLK信号图U三、仿真结果i、时钟信号由图可知,CLK信号周期为20ns,时钟信号正确。2、controljport 信号Nam©9 CARRY.OUT,data_out7:0> / control_port5 01ft CLRG CLK.5OM图 12 control_port 信号由图可知,controlqort信号在预料的循环之内,所以正确。3、data信号Nam
13、e> 酩 controljxrt5:0>data7:0弓CLK飞CLR由上图综合可知,data信号在预料的变化之内,所以正确。四、体会本次设计由于有了上一次跑表的设计,所以有了几分心得。要做得快了不 少,但还是有一定难度。把难度大的设计分为各个难度较小的模块来设计,本就是我们自顶向下设 计的一种重要思想。该设计就用到了这种思想。在简化的同时,我们应该确保 各个模块的正确性,所以各个模块我们都应测试、仿真之后在综合到一起。有时候分开各个模块都可以,但是综合在一起就有各种错误出现了。所以 我们在综合代码的时候,一点要小心又小心,确保引脚的对应关系无误。逻辑 顺序无误。五、代码1、Ver
14、ilog HDL 代码:/<CrjC4 位十进制计g* * */FJn待测频率,CLK_50M系统时钟,CLR复位标志,CARRY_OUT溢出标志 管位选信号/data_out数码管显示值trol_port 数码<2>rj> rjwrj> rjwrj> rjwrj> rjwrj>rj> rjw<><2> /rjw rjw rj> r|w rjwr|w r|> rj> r|w rjw r|w r|w r|> rj> r|w rj> ,(1)十进制计数器模块modulecounter_
15、10(CLK,CLR,En,data,CO);input CLK,CLR,En;output reg 3:0 data;output reg CO = 1'bO;always (posedge CLK or posedge CLR)beginif(CLR)begindata <= 4'bO;CO <= TbO;endelse if(En)beginif(data = 4'bl001)begindata <= 4'bO;CO <= lfbl;endelsebegindata <= data + 1'bl;CO <= l%
16、0;endendend endmodule(2)分频模块<£> <f> <f> <2> <t> <t> <2> <$><*><2> <t>,rj> rj> rj> rj> rjwrj> rj> rj> rj>rj> rj> rj> rj> rj> rj>分频模块,用于产生测试 用的频率,以及控制信号。modulediv_fre(CLK_50M,CLR,FJn,clk_ls
17、,clk_100us);input CLK_50M,CLR;output reg F_in,clk_ls,clk_100us;reg 12:0 cnt,cntl,cnt2;parameter div_num = 13'hl;13'hl387;改变阈值即可调节F_in的频率范围always (posedge CLK_50M or posedgeCLR)分频模块beginif(CLR)beginent <= 13'hO;elk lOOus <= 1'bO;endelse if(cnt =13'hl387)每0.1ms产生一个脉冲信号beginel
18、k lOOus <=lfbl;ent <= 13'hO;endelsebeginent <= cnt+l'bl;elk lOOus <= 1'bO;endendalways (posedge clk_100us or posedgeCLR)beginif(CLR)begincntl <= 13'hO;F in <=10;endelse if(cntl = div_num)begincntl <= 13'hO;F in <=F in;endelsecntl <= cntl + 1'bl;enda
19、lways (posedge clk_100us or posedgeCLR)beginif(CLR)begincnt2 <= 13fh0;elk Is <= 1'bO;end/else if(cnt2 = 13'hl387)else if(cnt2 = 13*ha)begincnt2 <= 13'bO;clk_ls <= -clk_ls;endelsecnt2 <= cnt2 + 1'bl;end endmodule(3)测频控制模块module test_ctl(clk_ls9cnt_en,clr_ciit);input clk
20、_ls; / 1HZoutput cnt_en;output clr_cnt;/ output load;reg div2clk = 0;wire cnt_en;reg clr_cnt,i;/ wire load;always (negedge clk_ls) beginfor(i = 10;i>0;i=i-l) div2clk <= lfbO;divlclk <= 1'bl;endalways (clk_ls or div2clk) beginif(!clk_ls && !div2clk) clr ent <= 1'bl;elseclr
21、 cut <= 1'bO;end/ assign load = -divlclk;assign cnt_en = div2clk;endmodule (4)锁存器模块module latch(clk,data_in,data_out);input elk;input 3:0 data_in;output reg 3:0 data_out = 4'bO;always (posedge elk) data_out <= data_in;endmodule(5)数码管显示模块moduleseg_display(CLK_50M,CLR9data_m_l,data_in_ 2
22、,data_in_3,data_in_4,data_out,control_port);input CLK_50M,CLR;input3:0data_in_l,data_in_2,data_in_3,data_in_4;output reg 7:0 data_out;output reg 3:0 control_port;reg 15:0 scan_cnt;reg 1:0 seg;always (posedge CLK_50M or posedgeCLR)数码管的动态扫描显示,每1ms显示下一位beginif(CLR)beginscan_cnt <= 16fh0;seg <= 2T
23、b00;endelsebeginif(scan_cnt = 16'hc34f)scan_cnt <= 16'hO;elsescan_cnt <= scan_cnt + 1;if(scan_cnt = 16'hO)beginif(seg = 2%11)seg <= 2fb00;elseendseg <= seg + 1'bl;endendalways (posedge CLK_50M or posedgeCLR)beginif(CLR)begindata out <= 8'bO;control_port <= 4'
24、;blllO;endelsecase(seg)数码管显示选择2'b00 : control_port,data_out <= 4,blll0,seg_data(data_in_l);2'b01 : control_port,data_out <= 4Tbll01 ,seg_data(data_in_2);2'blO : control_port,data_out <= 4' b 1011,seg_data(data_m_3);2'bll : control_port,data_out <= 4f bO 111 ,seg_data(
25、data_in_4);default : control_port,data_out <= 12'hecO;endcaseendmoduleendfunction7:0seg_data;数码管值的选择input 3:0 x;case(x)0: seg_data = 8fhc0;1: seg_data = 8fhf9;2: seg_data = 8fha4;3: seg_data = 8ThbO;4: seg_data = 8Th99;5: seg_data = 8'h92;6: seg_data = 8fh82;7: seg_data = 8fhf8;8: seg_data = 8fh80;9: seg_data = 8fh90;default: seg_data = 8'hff; endcaseendfunction2、测试代码:'timescale 10ns / Ipsmodule cym_cym_sch_tb();I I Inputsreg CLR;reg CLK_50M;/ Outputwire CAR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 通信网络套管预埋施工方案
- 弹簧用皮套产业运行及前景预测报告
- 伺服电机用电子控制器市场需求与消费特点分析
- 伽倻琴朝鲜弦琴产业深度调研及未来发展现状趋势
- 健身房及游泳池清洁服务方案
- 加油站气体泄漏应急处理方案
- 护理专业静脉血栓护理方案
- 厨房用非电动轧碎机市场需求与消费特点分析
- 引擎启动器产业运行及前景预测报告
- 提供维修信息行业相关项目经营管理报告
- 医保定点变更承诺书模板
- 井队搬家合同范本
- 神经系统肿瘤
- 危重症患者疼痛与意识状态的评估
- 城市生命线安全风险综合监测预警平台解决方案
- 景观艺术设计智慧树知到期末考试答案章节答案2024年天津美术学院
- 国有企业学习解读2024年新《公司法》课件
- 中药独活课件
- 中国戏曲剧种鉴赏 知到智慧树网课答案
- 宠物器械使用制度
- 2024春期国开电大法学本科《知识产权法》在线形考(第一至四次形考任务)试题及答案
评论
0/150
提交评论