【FPGA】Verilog实现奇偶分频
文章目录
- 一、奇分频
- 一、代码部分
- 二、仿真部分
- 二、偶分频
- 一、代码部分
- 二、仿真部分
- 三、D触发器二分频
- 一、代码部分
- 二、仿真部分
- 四、总结
一、奇分频
一、代码部分
// 奇分频
module odd_div(input clk,input rst_n,output clk_odd_div
);// 7分频
parameter DIV_NUM = 7;// 分频计数器
reg [2:0] cnt_div;
wire add_cnt_div;
wire end_cnt_div;reg clk_div1;
reg clk_div2;// 分频计数器
always @(posedge clk or negedge rst_n)begin if(!rst_n)begincnt_div <= 0;end else if(add_cnt_div)begin if(end_cnt_div)begin cnt_div <= 0;endelse begin cnt_div <= cnt_div + 1;end endelse begincnt_div <= cnt_div;end
end assign add_cnt_div = 1'b1;
assign end_cnt_div = add_cnt_div && cnt_div == DIV_NUM - 1;always @(posedge clk or negedge rst_n)begin if(!rst_n)beginclk_div1 <= 0;end else if(cnt_div == ((DIV_NUM - 1)/2))begin clk_div1 <= ~clk_div1;end else if(cnt_div == DIV_NUM - 1)beginclk_div1 <= ~clk_div1;end
endalways @(negedge clk or negedge rst_n)begin if(!rst_n)beginclk_div2 <= 0;end else if(cnt_div == ((DIV_NUM - 1)/2))begin clk_div2 <= ~clk_div2;end else if(cnt_div == DIV_NUM - 1)beginclk_div2 <= ~clk_div2;end
endassign clk_odd_div = clk_div1 | clk_div2;
endmodule
二、仿真部分
`timescale 1ns/1nsmodule odd_div_tb();
//激励信号定义
reg clk ;
reg rst_n ;//输出信号定义
wire clk_odd_div ;//时钟周期参数定义 parameter CLOCK_CYCLE = 20; odd_div u_odd_div(/* input */.clk (clk ),/* input */.rst_n (rst_n ),/* output */.clk_odd_div (clk_odd_div)
);//产生时钟
initial clk = 1'b0;
always #(CLOCK_CYCLE/2) clk = ~clk; //产生激励
initial begin rst_n = 1'b1; #(CLOCK_CYCLE*2); rst_n = 1'b0; #(CLOCK_CYCLE*2); rst_n = 1'b1;#(CLOCK_CYCLE*50);$stop;end
endmodule
二、偶分频
一、代码部分
module even_div(input clk,input rst_n,output clk_even_div
);// 8分频
parameter DIV_NUM = 8;reg [2:0] cnt_div;
wire add_cnt_div;
wire end_cnt_div;reg clk_div;// 分频计数器
always @(posedge clk or negedge rst_n)begin if(!rst_n)begincnt_div <= 0;end else if(add_cnt_div)begin if(end_cnt_div)begin cnt_div <= 0;endelse begin cnt_div <= cnt_div + 1;end endelse begincnt_div <= cnt_div;end
end assign add_cnt_div = 1'b1;
assign end_cnt_div = add_cnt_div && cnt_div == DIV_NUM - 1;always @(posedge clk or negedge rst_n)begin if(!rst_n)beginclk_div <= 0;end else if(cnt_div == (DIV_NUM/2) - 1)begin clk_div <= ~clk_div;end else if(cnt_div == DIV_NUM - 1)begin clk_div <= ~clk_div;end
endassign clk_even_div = clk_div;
endmodule
二、仿真部分
`timescale 1ns/1nsmodule even_div_tb();
//激励信号定义
reg clk ;
reg rst_n ;
//输出信号定义
wire clk_even_div ;//时钟周期参数定义 parameter CLOCK_CYCLE = 20; even_div u_even_div(/* input */.clk (clk ),/* input */.rst_n (rst_n ),/* output */.clk_even_div (clk_even_div)
);
//产生时钟
initial clk = 1'b0;
always #(CLOCK_CYCLE/2) clk = ~clk; //产生激励
initial begin rst_n = 1'b1; #(CLOCK_CYCLE*2); rst_n = 1'b0; #(CLOCK_CYCLE*2); rst_n = 1'b1; #(CLOCK_CYCLE*50); $stop;
end
endmodule
三、D触发器二分频
一、代码部分
module d_div2(input clk,input rst_n,output clk_div2
);reg clk_div;always @(posedge clk or negedge rst_n)begin if(!rst_n)beginclk_div <= 0;end else begin clk_div <= ~clk_div;end
endassign clk_div2 = clk_div;endmodule
二、仿真部分
`timescale 1ns/1nsmodule d_div2_tb();
//激励信号定义
reg clk ;
reg rst_n ;//输出信号定义
wire clk_div2;//时钟周期参数定义 parameter CLOCK_CYCLE = 20; d_div2 u_d_div2(/* input */.clk (clk ),/* input */.rst_n (rst_n ),/* output */.clk_div2 (clk_div2 )
);//产生时钟
initial clk = 1'b0;
always #(CLOCK_CYCLE/2) clk = ~clk; //产生激励
initial begin rst_n = 1'b1; #(CLOCK_CYCLE*2); rst_n = 1'b0; #(CLOCK_CYCLE*2); rst_n = 1'b1;#(CLOCK_CYCLE*50);$stop;
end
endmodule
四、总结
马上就要面试了,这种基础的题目得会,奇分频我第一时间也是懵逼的,不会啊,所以就要去看去学。
【FPGA】Verilog实现奇偶分频相关推荐
- 二、12【FPGA】分频器 —— 奇偶分频
前言 学习说明此文档为本人的学习笔记,注重实践,关于理论部分会给出相应的学习链接. 学习视频:是根据野火FPGA视频教程--第十四讲 https://www.bilibili.com/video/BV ...
- (79)FPGA面试题-Verilog实现五分频
1.1 FPGA面试题-Verilog实现五分频 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog实现五分频: 5)结束语. 1.1.2 本 ...
- verilog奇偶分频详解
文章目录 偶分频 2分频 2N分频 奇分频 3分频高电平 3分频低电平 一般结果推导 奇偶分频是一个很常见的问题,这里探讨的分频都是对于占空比为50%的信号分频,分频后的信号也是50%占空比.分频原信 ...
- Verilog实现2分频实例
1.1 Verilog实现2分频实例 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Verilog实现2分频实例: 5)结束语. 1.1.2 本节引言 "不积 ...
- Verilog实现3分频实例
1.1 Verilog实现3分频实例 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Verilog实现3分频实例: 5)结束语. 1.1.2 本节引言 "不积 ...
- 一看就会的奇偶分频电路
目录 前言 题目 二分频电路 第一步:画波形图 第二步:写状态机 三分频电路--1/3占空比 第一步:画波形图 第二步:写状态机 三分频电路--1/2占空比 第一步:画波形图 第二步:写状态机 4/5 ...
- 离散小波变换的FPGA/Verilog实现
小波变换(二) 离散小波变换的FPGA/Verilog实现 to 51研究不顺的假期 文章目录 小波变换(二) 尺度函数族 小波函数定义 尺度函数定义 尺度函数分辨率沿拓 多分辨分析(MRA)方程 尺 ...
- 【数字IC手撕代码】Verilog半整数分频|题目|原理|设计|仿真
芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...
- Verilog——时钟3分频
Verilog--时钟3分频 功能实现 3分频模块实现 仿真 功能实现 简单实现一个对输入时钟的3分频.相信2分频可能是一个FPGA的初学者最先实现的模块了,但是心里一直有个疑问,3分频如何实现?最近 ...
最新文章
- Matlab 牛顿方法求解方程
- 目标检测评价标准 精准度(precision)、召回率(recall)、准确率(accuracy)、交除并(IoU)【全】
- 计算机辅助语言和计算语言学关系,建构主义理论视角下计算机辅助语言学习环境对留学生学习汉语动机的影响——以广西大学泰国留学生为例-语言学及应用语言学专业论文.docx...
- 编程实现将一个N进制数转换成M进制数
- 安装epel源 失败:未知的名称或服务。 wget: 无法解析主机地址 “mirrors.aliyun.com”
- 降序php,以降序php读取文件
- 太阳能电池板正负极图_太阳能LED路灯故障原因有哪些?
- Linux两个网卡mac地址重复,ARP响应Linux服务器上的单个MAC地址,同一网络上有多个接口...
- Angular使用总结 --- 模型驱动表单
- 学了python可以干嘛-学 Python 都用来干嘛的?
- 采用dlopen、dlsym、dlclose加载动态链接库【转】
- SQL Server 2000 Service Pack 4 is released
- 勤哲excel服务器端口协议,用勤哲Excel服务器实现管理完整.doc
- Tableau:仪表板操作
- HTML5网页设计 (一)
- skype在线代码 skype在线代码怎么弄?
- 一个QQ用户名/密码钓鱼分析
- 什么是互联网产品策划、什么是运营策划(经典收藏)
- 嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210)
- 商业智能助力 银行业数据“挖金”