verilog二分频代码verilog三分频代码
1.二分频
首先要明白,二分频分的是输入时钟的频率,即CLK的频率。
思路:在每次CLK的上升沿或者下降沿让输出Q翻转不就完成频率的二分了吗?
代码:
module div_2 (q,clk,reset); // 输出q,输入时钟CLK,同步复位信号RESET.
output q;
input reset;
input clk;
reg q;
always @ (posedge clk or posedge reset)
if (reset)
q<=1'b0; // 复位置零
else
q<=~q; // 否则q信号翻转
endmodule
测试代码:
module test;
reg clk;
reg reset;
div_2 d2 (q,clk,reset);// 调用我们设计的功能模块div_2
always #20 clk=~clk;// 产生周期为40个时间单位的时钟脉冲信号
// initial块只执行一次,此处让CLK的起始电平为低,RESET为高
initial
begin
clk=1'b0;
reset=1'b1;
#24 reset =1'b0;
end
endmodule
下面我们来看一下MODELSIM的仿真波形,是不是输出Q的频率变成CLK的一半了呢?
2.三分频
此处给的不是50%占空比的三分频,稍后给出。
思路:设置一个计数器,让计数器计数到适当的值得时候输出q翻转就行了。
代码:
module div_3 (q,clk,reset);
output q;
input reset;
input clk;
reg q;
reg [1:0] count; // 设了一个2位的计数器可以从00计数到11;
always @ (posedge clk or posedge reset) // 同步复位,上升沿有效
if (reset) // 复位
begin
q<=1'b0;
count<=2'b00;
end
else if(count==0) // 第一个CLK上升沿来的时候q翻转一次计数器加一;
begin
q<=~q;
count<=count+1'b1;
end
else if(count==2) //第3个CLK上升沿来的时候输出q翻转一次计数器归零;
begin
q=~q;
count<=2'b00;
end
else // 第二个CLK上升沿来的时候q不动作,计数器加一。
begin
count<=count+1'b1;
end
endmodule
测试代码:
// 和以上2分频的一样的测试代码,就是调用功能模块的名字不同,这很好理解,就是你给的任意的CLK的
//频率我都可以三分频才对的
module test;
reg clk;
reg reset;
div_3 d3 (q,clk,reset);
always #20 clk=~clk;
initial
begin
clk=1'b0;
reset=1'b1;
#24 reset =1'b0;
end
endmodule
看一下波形,是不是原来的三个周期变成一个周期啦??也就是频率三分了
3.三分频 (占空比1/2)
思路:
占空比为50%的三分频稍微麻烦一些,其实就是两个占空比都为1/3的q1和q2相或得到占空比为50%的三分频输出q,只是这两个q1和q2分别是在时钟的上升沿和下降沿翻转而已。
代码:
module div_3 (q,clk,reset);
output q;
input reset;
input clk;
reg q1,q2; // 内部寄存器变量,分别是两个占空比为1/3的分频;
reg [1:0] count1,count2;
assign q=q1|q2; // 两个相或才是我们要得到的输出q
always @ (posedge clk or posedge reset) //上升沿生成的三分频q1;
if (reset)
begin
q1<=1'b0;
count1<=2'b00;
end
else if(count1==0)
begin
q1<=~q1;
count1<=count1+1'b1;
end
else if(count1==1)
begin
q1=~q1;
count1<=count1+1'b1;
end
else
begin
count1<=2'b00;
end
always @ (negedge clk or posedge reset) //下降沿生成的三分频信号q2, 该代码原
// 理和q1产生原理一致
if (reset)
begin
q2<=1'b0;
count2<=2'b00;
end
else if(count2==0)
begin
q2<=~q2;
count2<=count2+1'b1;
end
else if(count2==1'b1)
begin
q2=~q2;
count2<=count2+1'b1;
end
else
begin
count2<=2'b00;
end
endmodule
测试代码:
module test; // 与以上各测试代码一致
reg clk;
reg reset;
div_3 d3 (q,clk,reset);
always #20 clk=~clk;
initial
begin
clk=1'b0;
reset=1'b1;
#24 reset =1'b0;
end
endmodule
我们来看一下q的波形,是不是占空比为50%的三分频输出呢?
好了,知道了这两个分频,我想你应该可以推理出其它的奇偶分频代码了,当然,大于2的偶分频代码需要有一个count来计数,在适当的时候翻转就行,其实分频代码从某种程度上来说就是计数器的适当输出而已。
verilog二分频代码verilog三分频代码相关推荐
- 数字IC秋招手撕代码(二)50%占空比的三分频
数字IC秋招手撕代码(二)50%占空比的三分频 题目 设计思路 与逻辑分频 代码 或逻辑分频 代码 异或逻辑分频 代码 题目 用verilog实现三分频电路,要求输出50%占空比 设计思路 如果不限制 ...
- python代码重构技巧_Python代码重构
代码重构是一件很是辛苦却很是有意义的事情,代码重构的缘由在于:django 一.代码过于冗余.沉余架构 二.代码过于耦合函数 三.代码过于复杂学习 四.接口调用超出三层优化 此次重构主要在于架构问题, ...
- 【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)
芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...
- verilog奇数分频,三分频实例
verilog奇数分频,三分频实例 目的:输入一个时钟信号,输出占空比为50%的三分频. 首先得到一个占空比为1/3的分频时钟,然后将输入信号取反,得到一个移相180度的占空比为1/3的分频时钟,将两 ...
- (86)Verilog HDL:三分频设计
(86)Verilog HDL:三分频设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL:三分频设计 5)结语 1.2 FPGA简介 FPGA( ...
- verilog实现奇数分频--以三分频为例
工程文件 module aa( input rst_n,input clk,output clko); reg [1:0] cnt;reg clk1,clk2;always@(posedge clk ...
- verilog写的三分频
笔试的时候有一道题目要求设计三分频电路,晕,想了半天想不出来,回到宿舍里才动手写了出来,如下: 其实3分频电路有很多种方法,这里选用其中一种:先求出两个占空比为1/3的频率波形,注意分别为上升沿触发和 ...
- IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)
实现三分频电路最简单的是: 利用计数器实现. 时序图分析(本人比较懒,平常科研忙,所以直接手画时序图了,懒得用软件画了): 直接上图分析:利用计数器每隔三个周期信号翻转一次,同时在不同的计数下翻转得到 ...
- 题目:用Verilog实现三分频电路,要求输出50%占空比。
题目:用Verilog实现三分频电路,要求输出50%占空比. module Div_three(input clk,input rst_n,output div_three ); reg [1:0] ...
最新文章
- Java动态追踪技术探究
- SAP Spartacus 4.0 deprecation 之一 - i18next-xhr-backend
- bbs php redis,LAMP+redis搭建discuz论坛
- python string模块template_Python标准库笔记(1) — string模块
- java 分布式同步_Java Web分布式集群搭建(三)——Session同步
- leecode-3无重复字符串的最长子字符串C版-滑动窗口
- coursera 视频总是缓冲或者无法观看,有什么方法解决?
- 从代码到300优质客户,用户画像在销售的实战应用
- TwinCAT 3 file记录日志txt文件程序
- 学习笔记:弱监督学习-valse青年会议
- After Effect CC 2019插件
- 浅谈中国古代服饰纹样中礼制精神的体现
- Numpy一维array转置
- 蓝牙通信工作流程讲解
- 交换机 tagged 与 untagged 的关系
- Linux系统访问Windows(本机)的Navicat数据库
- spring boot微服务项目搭建
- 数据结构实验——顺序表操作
- 11 java 王少飞-Java语言的主要特性分析
- 用HOSTS文件屏蔽网站