FPGA—4位十进制频率计_第1页
FPGA—4位十进制频率计_第2页
FPGA—4位十进制频率计_第3页
FPGA—4位十进制频率计_第4页
FPGA—4位十进制频率计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4 位十进制频率计 一 一 设计目的设计目的 用 Verilog HDL 语言设计一个能实现自动测频的 4 位十进制频率计 1 测量范围 1Hz 9999Hz 2 测量的数值通过 4 个数码管显示 3 频率超过 9999Hz 时 溢出指示灯亮 可以作为扩大测量范围的接口 二 二 设计原理设计原理 1 若某一信号在 T 秒时间里重复变化了 N 次 则根据频率的定义可知该 信号的频率 fs 为 fs N T 2 当 T 1s 时 N 就是测得的频率 3 根据以上所提出的方法 测定信号的频率必须有一个脉宽为 1 秒的对输 入信号脉冲计数允许的信号 1 秒计数结束后 计数值锁入锁存器的锁存信号 和为下一测频计数周期作准备的计数器复位信号 这个复位信号可以由一个测 频控制信号发生器产生 即图 1 中的 TESTCTL 它的设计要求是 TESTCTL 的计数使能信号 CNT EN 能产生一个 1 秒脉宽的周期信号 并对频率计的每一 计数器 CNT10 的 EN 使能端进行同步控制 当 CNT EN 高电平时 允许计数 低电平时停止计数 并保持其所计的脉冲数 在停止计数期间 每 0 01ms 锁存 器进行一次锁存 并由数码管显示计数值 设置锁存器是为了使显示的数据稳 定 不会由于周期性的清零信号而不断闪烁 锁存信号之后 必须有一清零信 号 RST CNT 对计数器进行清零 为下 1 秒钟的计数操作准备 图 1 原理图 三 三 设计步骤设计步骤 1 新建 cym 工程文件 图 2 建立工程 由于是用 VHDL 语言进行设计 所以此处选择类型为 HDL 之后一直点击确 认即可 图 3 芯片信息配置 由于我们所采用的板子为 RCXQ208 V5 FPGA 开发板 所以配置如图所示 2 新建各个分模块并输入代码 图 4 建立 VHDL 文件 3 建立顶层文件为原理图型 例化各个模块并连接 图 5 建立 VHDL 文件 4 对设计进行综合 如果出现错误 根据提示改正 图 6 综合 黄色感叹符号代表有警告 有些警告可以忽略 绿色小勾表示综合成功 5 建立测试文件并进行仿真 验证设计 图 7 建立激励文件 之后一直点击确认即可 为了结合我们的下载板子的时钟信号 在测试文件中设置时钟单位为 10ns 精度为 1ps 如图 图 8 设置时钟单位 仿真文件应验证个端口的正确性 由于时钟单位为 10ns 所以 CLK 50M 每 一个仿真时间单位翻转一次即可产生一个 50M 的时钟信号 开始时进行一次复 位 使各寄存器初值正确 control port 端为数码管位扫描端 所以其值一直在 1110 1101 1011 0111 循环 data out 端为数码管显示的数字对应的七段数 码管的二进制数据 它的值可以与 control port 端对应到一起观察 转换为对应 的十进制数据即是 1110 1101 1011 0111 对应的 data 端的信号由 0 9 循环 对测试文件进行检查 出现绿色小勾表示无语法错误 可以进行仿真 图 9 6 根据板子锁定引脚 并生成下载文件 下载板有两个时钟输出引脚 一个为 40M 的 一个为 50M 的 本设计采 用的是 50M 所以 CLK 50M 引脚锁定为引脚 P80 即 net CLK 50M loc p80 CLR 复位端连接一个轻触开关 为 P57 即 net CLR loc p57 CARRY OUT 溢出标志端用一个 LED 灯来表示 net CARRY OUT loc p22 下载板数码管引脚图如图所示 图 10 数码管端口图 由图可知data端和control port端的引脚应该分别锁定为 net data out 0 loc p102 net data out 1 loc p99 net data out 2 loc p107 net data out 3 loc p109 net data out 4 loc p112 net data out 5 loc p100 net data out 6 loc p106 net data out 7 loc p108 net control port 0 loc p127 net control port 1 loc p128 net control port 2 loc p129 net control port 3 loc p132 net control port 4 loc p120 net control port 5 loc p122 四 四 仿真结果仿真结果 1 时钟信号 图 11 验证 CLK 信号 由图可知 CLK 信号周期为 20ns 时钟信号正确 2 control port 信号 图 12 control port 信号 由图可知 control port 信号在预料的循环之内 所以正确 3 data 信号 图 13 data 信号 第二个扫描周期 图 14 data 信号 第三个扫描周期 图 15 data 信号 第四个扫描周期 图 16 data 信号 第五个扫描周期 由上图综合可知 data 信号在预料的变化之内 所以正确 五 五 体会体会 本次设计由于有了上一次跑表的设计 所以有了几分心得 要做得快了不 少 但还是有一定难度 把难度大的设计分为各个难度较小的模块来设计 本就是我们自顶向下设 计的一种重要思想 该设计就用到了这种思想 在简化的同时 我们应该确保 各个模块的正确性 所以各个模块我们都应测试 仿真之后在综合到一起 有时候分开各个模块都可以 但是综合在一起就有各种错误出现了 所以 我们在综合代码的时候 一点要小心又小心 确保引脚的对应关系无误 逻辑 顺序无误 六 六 代码代码 1 Verilog HDL 代码 4 位十进制计数器 F in 待测频率 CLK 50M 系统时钟 CLR 复位标志 CARRY OUT 溢出标志 data out 数码管显示值 control port 数码管位选信号 1 十进制计数器模块 module counter 10 CLK CLR En data CO input CLK CLR En output reg 3 0 data output reg CO 1 b0 always posedge CLK or posedge CLR begin if CLR begin data 4 b0 CO 1 b0 end else if En begin if data 4 b1001 begin data 4 b0 CO 1 b1 end else begin data data 1 b1 CO 1 b0 end end end endmodule 2 分频模块 分频模块 用于产生测试 用的频率 以及控制信号 module div fre CLK 50M CLR F in clk 1s clk 100us input CLK 50M CLR output reg F in clk 1s clk 100us reg 12 0 cnt cnt1 cnt2 parameter div num 13 h1 13 h1387 改变阈值即可调节 F in 的频率范围 always posedge CLK 50M or posedge CLR 分频模块 begin if CLR begin cnt 13 h0 clk 100us 1 b0 end else if cnt 13 h1387 每 0 1ms 产生一个脉冲信号 begin clk 100us 1 b1 cnt 13 h0 end else begin cnt cnt 1 b1 clk 100us 1 b0 end end always posedge clk 100us or posedge CLR begin if CLR begin cnt1 13 h0 F in 1 b0 end else if cnt1 div num begin cnt1 13 h0 F in F in end else cnt1 cnt1 1 b1 end always posedge clk 100us or posedge CLR begin if CLR begin cnt2 13 h0 clk 1s 1 b0 end else if cnt2 13 h1387 else if cnt2 13 ha begin cnt2 13 b0 clk 1s clk 1s end else cnt2 0 i i 1 div2clk 1 b0 div2clk 1 b1 end always clk 1s or div2clk begin if clk 1s else clr cnt 1 b0 end assign load div2clk assign cnt en div2clk endmodule 4 锁存器模块 module latch clk data in data out input clk input 3 0 data in output reg 3 0 data out 4 b0 always posedge clk data out data in endmodule 5 数码管显示模块 module seg display CLK 50M CLR data in 1 data in 2 data in 3 data in 4 data out control port input CLK 50M CLR input 3 0 data in 1 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 posedge CLR 数码管的动态扫描显 示 每 1ms 显示下一位 begin if CLR begin scan cnt 16 h0 seg 2 b00 end else begin if scan cnt 16 hc34f scan cnt 16 h0 else scan cnt scan cnt 1 if scan cnt 16 h0 begin if seg 2 b11 seg 2 b00 else seg seg 1 b1 end end end always posedge CLK 50M or posedge CLR begin if CLR begin data out 8 b0 control port 4 b1110 end else case seg 数码管显示选择 2 b00 control port data out 4 b1110 seg data data in 1 2 b01 control port data out 4 b1101 seg data data in 2 2 b10 control port data out 4 b1011 seg data data in 3 2 b11 control port data out 4 b0111 seg data data in 4 default control port data out 12 hec0 endcase end function 7 0 seg data 数码管值的选择 input 3 0 x case x 0 seg data 8 hc0 1 seg data 8 hf9 2 seg data 8 ha4 3 seg data 8 hb0 4 seg data 8 h99 5 seg data 8 h92 6 seg data 8 h82 7 seg data 8 hf8 8 seg data 8 h80 9 seg data 8 h90 default seg data 8 hff endcase endfunction endmodule 2 测试代码 timescale 10ns 1ps module cym cym sch tb Inputs reg CLR reg CLK 50M Output wire CARRY OUT wire 7 0 data out wire 3 0 control port Bidirs Instantiate the UUT cym UUT CLR CLR CARRY OUT CARRY OUT CLK 50M CLK 50M data out data out control port control port Initialize Inputs initial begin CLK 50M 0 forever 1 CLK 50M CLK 50M end initial begin CLR 1 10 CLR 0 end endmodule 3 引脚锁定 net CLK 50M loc p80 net CLR loc p57 net CARRY OUT loc p22 net data out 0 loc p102 net data out 1 loc p99 net data out 2 loc p1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论