当前位置: 首页 > news >正文

17.分频器设计拓展练习-任意分频通用模块

(1)Verilog代码:

module divider_n(clk,reset_n,clk_out);input clk;input reset_n;output clk_out;wire clk_out1;wire clk_out2;wire [9:0]n;wire m;assign n = 9;assign m = n % 2;divider_even divider_even_inst(.clk(clk),.reset_n(reset_n),.n(n),.en(!m),.clk_out(clk_out1));divider_odd divider_odd_inst(.clk(clk),.reset_n(reset_n),.n(n),.en(m),.clk_out(clk_out2));assign clk_out = m ? clk_out2 : clk_out1;endmodule
module divider_even(clk,reset_n,n,en,clk_out);input clk;input reset_n;input [9:0]n;       //分频数input en;output reg clk_out;reg [9:0]cnt;wire [9:0]MCNT;assign MCNT = (n >> 1) - 10'd1;//计数器模块设计   always@(posedge clk or negedge reset_n)if(!reset_n)cnt <= 10'd0;else if ((cnt == MCNT)&&(en))cnt <= 10'd0;else if(en)  cnt <= cnt + 10'd1;else cnt <= 10'd0;//clk_out信号设计always@(posedge clk or negedge reset_n)if(!reset_n)clk_out <= 1'd0;else if (cnt == MCNT)clk_out <= ~clk_out;else clk_out <= clk_out;endmodule
module divider_odd(clk,reset_n,n,en,clk_out);input clk;input reset_n;input [9:0]n;     //分频数input en;output clk_out;reg [9:0]cnt;reg clk_1;reg clk_2;wire [9:0]MCNT;wire [9:0]Mid;assign MCNT = n - 10'd1;assign Mid  = (n >> 1);//计数器模块设计always@(posedge clk or negedge reset_n)if(!reset_n)cnt <= 10'd0;else if((cnt == MCNT)&&(en))cnt <= 10'd0;else if(en)cnt <= cnt + 10'd1;else cnt <= 10'd0;//clk_1信号设计always@(posedge clk or negedge reset_n)if(!reset_n)clk_1 <= 1'd0;else if(cnt == Mid)clk_1 <= 1'd1;else if(cnt == MCNT)clk_1 <= 1'd0;else clk_1 <= clk_1;//clk_2信号设计always@(negedge clk or negedge reset_n)if(!reset_n)clk_2 <= 1'd0;else if(cnt == Mid)clk_2 <= 1'd1;else if(cnt == MCNT)clk_2 <= 1'd0;else clk_2 <= clk_2;assign clk_out = (clk_1 | clk_2);endmodule

(2)代码层次:

(3)仿真代码:

`timescale 1ns / 1psmodule divider_n_tb;reg clk;reg reset_n;wire clk_out;divider_n divider_n_inst(.clk(clk),.reset_n(reset_n),.clk_out(clk_out));initial clk = 1'd1;always #10 clk = ~clk;initial beginreset_n = 1'd0;#15;reset_n = 1'd1;#2000$stop;endendmodule

(4)仿真波形

(5)将顶层模块的n改成10,重新进行仿真

(6)引脚绑定:

(7)以下分别是n=10和n=25时的示波器实验现象,时钟频率为50MHz

相关文章:

  • XML Schema 属性
  • 揭秘:离心风机风量背后的科学原理
  • 没什么事情,随记一下 -出差
  • Labview_压缩文件
  • 关于string的‘\0‘与string,vector构造特点加部分特别知识点的讨论
  • 详细对比Java SPI、Spring SPI 和 Dubbo SPI
  • 【机器学习】特征选择:精炼数据,提升模型效能
  • 暴雨突袭不可不看!水浸传感器作用有这些
  • ubuntu 查看联网配置
  • PaddleVideo:Squeeze Time算法移植
  • WebOffice在线编微软Offfice,并以二进制流的形式打开Word文档
  • 【软件测试】 1+X初级 功能测试试题
  • antDesignPro随记
  • Python OpenCV 教学取得视频资讯
  • 电动卡丁车语音芯片方案选型:让驾驶体验更智能、更安全
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • Centos6.8 使用rpm安装mysql5.7
  • ES6简单总结(搭配简单的讲解和小案例)
  • java小心机(3)| 浅析finalize()
  • Sass Day-01
  • spring security oauth2 password授权模式
  • SSH 免密登录
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 检测对象或数组
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 我的面试准备过程--容器(更新中)
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ![CDATA[ ]] 是什么东东
  • # 数仓建模:如何构建主题宽表模型?
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • (2)nginx 安装、启停
  • (AngularJS)Angular 控制器之间通信初探
  • (Charles)如何抓取手机http的报文
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (译)2019年前端性能优化清单 — 下篇
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • .net framework profiles /.net framework 配置
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET MVC第三章、三种传值方式
  • .net MVC中使用angularJs刷新页面数据列表
  • .net 反编译_.net反编译的相关问题
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .sys文件乱码_python vscode输出乱码
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @ModelAttribute 注解
  • [20170705]diff比较执行结果的内容.txt
  • [BJDCTF2020]Easy MD51
  • [C++内存管理]new,delete,operator new,opreator delete