数电实验6:可控分频器设计
数电实验6:可控分频器设计
- 一、实验目的
- 二、基本实验内容
- 三、提高性实验内容(选做)
- 四、预习实验
- 五、实验报告要求
- 六、内容讲解(基础实验内容)
- 七、testbench及仿真结果
- 1.testbench
- 2.仿真结果
一、实验目的
- 学习 ModelSim 仿真方法。
- 巩固 Verilog HDL 时序电路设计。
二、基本实验内容
- FPGA 开发板上有一个 50MHz 的高频时钟。设计一个可控分频器,clk_in 为分频器时钟输入, sel为选择开关, clk_out为分频器信号输出。当sel=0时,fclk_out=sn[2:0]Hz;当 sel=1 时, fclk_out=sn[4:0] Hz。
- clk_out 的占空比 D=28%;(D=tH/T, tH 为高电平时间, T 为周期)
- 说明。 sn 为学号, sn[2:0]表示取十进制学号的后 3 位, sn[4:0]表示取十进制学号的后 5 位,若学号后 3 位为 0 则学号后 5 位按 32768 取值。例如,学号 sn=2017112345,sn[2:0]=345; sn=2017100000, sn[2:0]=768.
- 实验测试
- 用导线将 clk_out 接入实验箱的 CH0 逻辑分析仪通道, 测试 clk_out 实际输出频率及占空比, 若与要求不相符(误差须小于 1‰), 修改电路程序使之符合要求。
三、提高性实验内容(选做)
- 增加占空比调节功能,每按一下“+”键,占空比增加 10%;每按一下“-”键,占空比减少 1%;
- 使输出信号的占空比按正弦波规律自动变化,正弦波频率为 300Hz;
- 其他
四、预习实验
- 写出设计思路。
- 由于 FPGA 只能进行整数计数来分频, 会存在除不尽的情况而只能四舍五入取整数,
请根据实际分频系数计算因为取整导致的理论误差。 - 自学 ModelSim 仿真方法, 用 ModelSim 对实验电路进行仿真(需使用标尺功能测
量输出信号频率/周期、占空比),并将仿真代码及仿真结果截图打印。 - 自行安排所用引脚, 列出引脚锁定分配表(信号名->主板器件名->引脚号)
五、实验报告要求
- 列出程序代码(有详细注释)。
- 列出通电测试结果。
- 列出实验过程出现的问题及解决措施。
- 附源程序
六、内容讲解(基础实验内容)
我们以学号为2017112345为例讲解本次实验。
首先,先将基本框架写出来。
module controlled_frequency
(input wire clk_in ,input wire reset_n ,input wire sel ,output wire clk_out
);endmodule
sn[2:0] = 345,sn[4:0] = 12345 。输入时钟clk_in的频率为50MHz,周期T0 = 20ns。当输出时钟的频率为345Hz时,周期为T1 ≈ 144927T0,占空比为28%,则高电平时间为T1H = 40580T0 ;当输出时钟的频率为12345Hz时,周期T2 ≈ 4050T0,高电平时间T2H = 1134T0;因此我们首先需要一个计数器,并且对各个计数值进行编码。sel = 0 ,输出时钟频率为345Hz时,计数器从0到144926循环计数,并且在0 ~ 40579内,clk_out保持高电平,剩下的时间保持低电平;sel = 1,输出时钟频率为12345Hz时,计数器从0到4049循环计数,并且在0 ~ 1133内,clk_out保持高电平,剩下时间保持低电平。代码如下
module controlled_frequency
(input wire clk_in ,input wire reset_n ,input wire sel ,output wire clk_out
);//以学号2017112345为例
parameter CNT_CLK1 = 20'd144926 ;//频率为345Hz时钟计数(从0开始):144927 - 1
parameter CNT_CLK2 = 20'd4049 ;//频率为12345Hz时钟计数(从0开始):4050 - 1
parameter CNT_CLK1_HIGH = 20'd40579 ;//345Hz时钟高电平计数(从0开始):40580 - 1
parameter CNT_CLK2_HIGH = 20'd1133 ;//12345Hz时钟高电平计数(从0开始):1134 - 1reg [19:0] CNT ;
//CNT的计数逻辑
always@(posedge clk_in, negedge reset_n)beginif(!reset_n)CNT <= 20'd0;else if((sel == 1'b0) && (CNT >= CNT_CLK1))//输出时钟频率345HzCNT <= 20'd0;else if((sel == 1'b1) && (CNT >= CNT_CLK2))//输出时钟频率为12345HzCNT <= 20'd0;elseCNT <= CNT + 1'b1;end//clk_out的逻辑
assign clk_out = ( (sel == 0 && CNT <= CNT_CLK1_HIGH) || (sel == 1 && CNT <= CNT_CLK2_HIGH) )? 1'b1:1'b0;endmodule
在更换频率时(sel从0变为1),计数器计数可能会大于CNT_CLK2(4049),需要将计数器清零,因此我们计数器清零的条件是 CNT >= CNT_CLK2。
七、testbench及仿真结果
1.testbench
`timescale 10ns/1ns//时间单位10ns,时间精度1nsmodule tb_controlled_frequency();reg clk_in ;
reg reset_n ;
reg sel ;
wire clk_out ;initialbeginclk_in <= 1'b1;reset_n <= 1'b0;sel <= 1'b0;# 5 reset_n <= 1'b1;# 1500000 sel <= 1'b1;endalways #1 clk_in = ~clk_in;//时钟周期为20nscontrolled_frequency controlled_frequency_inst//实例化
(.clk_in (clk_in ),.reset_n (reset_n ),.sel (sel ),.clk_out (clk_out )
);endmodule
2.仿真结果
sel = 0,CNT从0开始计数,clk_out为高电平。
计数到40579,clk_out变为低电平,保持低电平到144926,计数器清零,clk_out又变为高电平。
sel = 1时
CNT从0计数到1133,clk_out保持高电平,在1134后保持低电平。
计数到4049后,计数器清零,clk_out又变为高电平。
欢迎在评论区留言,感谢您的关注与支持!
数电实验6:可控分频器设计相关推荐
- [数电实验]外星萤火虫设计
[数电实验]外星萤火虫设计 文章目录 [数电实验]外星萤火虫设计 题目描述 电路要求 题目分析 解决方案 代码 仿真 题目描述 在遥远的 Mars星上有一种类似地球萤火虫的生物 星上有一种类似地球萤火 ...
- 湖南大学_数电实验_模型机设计_CPU设计_verilog_课程实验报告
本学期的数电课程实验就是模型机设计,由四次小实验构成,最后一次实验验收要求使用quartus做出一个模型机. 该实验的重要性:该实验的核心在于基于实验指导书设计CPU,从而帮我们理解CPU的工作原理. ...
- 数电实验:数字时钟设计 (经验分享,仅供参考)
实 验 目 的 一.独立完成一个数字小系统的设计 二.基于实验箱对设计进行验证 实验内容: 能够显示时.分.秒共6位数字: 考虑使用实验箱时钟(频率包括1M.500K. 250K.100K.10K.1 ...
- 【数电实验7】Verilog—外星萤火虫
[2022.05西南交大数电实验] [本代码及波形已通过老师验收.仅供参考.] [参考博客:[数电实验]外星萤火虫设计_难凉oh的博客-CSDN博客] [建议:有些口语化的注释看完删掉比较好哈,怕老师 ...
- 数电实验(一)利用与非门设计四舍五入判别电路
数电实验(一)利用与非门设计四舍五入判别电路 要求: 1.输入为8421BCD码,接四个逻辑电平开关,同时接数码管. 2.输出和LED相连. 一.写出逻辑函数: F(A,B,C,D)=∑m(5,6,7 ...
- 数电实验(三)利用3线-8线译码器74LS138和与非门设计一个表决电路
数电实验(三)利用3线-8线译码器74LS138和与非门设计一个表决电路 要求: 设计一个表决电路, 当控制端M=0时,输入端A.B.C一致同意时,输出F为1,否则输出为0:当控制端M=1时,输入端A ...
- 数电实验4:彩灯控制器设计
数电实验4:彩灯控制器设计 一.实验目的 二.实验内容 三.预习要求 四.实验报告要求 五.Verilog代码.RTL视图及仿真波形 1.Verilog代码 2.RTL视图 3.仿真波形 西南交大数电 ...
- 数电实验(四)利用集成数值比较器74LS85设计一个4位数值比较器
数电实验(四)利用集成数值比较器74LS85设计一个4位数值比较器 要求: 1.输入为两个4位二进制数,分别接四个逻辑电平开关,同时接数码管 2. 输出和LED相连 Multisim仿真:
- 数电实验报告实验一_大二下学期的两三事之数电实验amp;课设
数电实验&课设 叮 写在前面 这学期的数电实验老师是陈W老师.上学期的模电,选过一次他的课,线下教学,老师讲课游刃自如,点到为止,但又醍醐灌顶:这学期线上教学,可能是软件运用不熟练,他多少有些 ...
最新文章
- 去年押中数字人爆发,今年看好什么?百度研究院2022十大科技趋势预测出炉
- Mysql之alter用法汇总
- tomcat启动慢_Hack下mongodb jdbc driver启动慢
- 多线程断点续传及下载
- eclipse的tomcat插件使用下载(转)
- torch版ResNet50(带有多输出)转c++ tensorrt
- 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 生成对抗网络
- Java-Tomcat 5.5 下的JNDI
- 划重点!2019年这类程序员非常稀缺,年薪超平均水平10倍
- L1-004. 计算摄氏温度-PAT团体程序设计天梯赛GPLT
- 新手常见的python报错及解决方案
- vbScript: 编号成生不夠位數前面加零
- steam显示不能连接网络连接服务器,steam请检查网络连接
- 海贼C语言,PSV海贼无双3金手指代码 (PSVC)
- PC端微信缓存清理方法
- 计算机热点ip设置,电脑宽带怎样设置wifi热点
- 开发部程序员绩效考核办法
- 黄子韬快手带货首秀GMV破2.3亿,真性情无套路直播效果拉满!
- Python分析薛之谦与李雨桐互撕微博
- 乱舞之双刀--mhp2怪物猎人双刀攻略…
热门文章
- 交换机S5720外网断开两次(12月1日,11月27日),关闭auto-port-defend功能,仅开启auto-defend。针对信任的IP,acl放通,然后在策略里面调用ACL
- 单链表指针和头结点的理解
- FIREFLY-RK3399-UBUNTU-20.04 GUI info
- 安装mysql windows server 2012 r2 丢失msvcr100.dll
- 【实战】kaggle猫狗大战-卷积神经网络实现猫狗识别
- 成功跳槽字节跳动,详细的Java学习指南
- 2023年度全球品牌价值500强榜单公布,苹果失去头把交椅,亚马逊重新登顶第一 | 美通社头条...
- 全球与中国超声设备市场深度研究分析报告
- 为什么 Activity 都重建了 ViewModel 还存在?—— Jetpack 系列
- matlab deconv出现无穷大,【 MATLAB 】deconv 函数介绍