原创 奇数分频电路的设计

2012-12-29 13:50 1200 16 18 分类: FPGA/CPLD 文集: Verilog

  那一年我在学NIOS,学习过程中,自己遇到了好多问题,NIOS II 9.0和WIN7 的兼容性问题,如何修改运行程序的权限(想知道的网上一搜,多的很),再到NIOS II 12.0 FREE 的ID 问题,真的整的自己都想放弃NIOS的学习,运行过程中电脑一直死机,等等,问题的问题的问题,呵呵…

言归正传,说说Verilog 的学习心得,以及奇数分频电路产生方法,以便和大家共享。其实奇数分频电路的产生方法很多,自己今天学了“错位异或”法,那就简述错位异或法。其原理简述:对于实现占空比50%的N倍奇数分频,首先进行上升沿触发的模N计数,奇数到某一定值是进行输出时钟翻转,然后经过(N - 1) /  2次翻转,得到一个占空比非50% 的奇数N分频时钟。再者,同时进行下降沿模N计数,到和上升沿触发输出时钟翻转选定值相同时,进行输出时钟翻转,同样经过(N - 1)/  2,输出时钟再次翻转,产生占空比非50% 的奇数N分频时钟。最后两个非50% 的时钟相或,得到占空比为50% 的奇数N分频时钟。是不是说的有点懵了,那就看看具体代码的实现,以自己经历,看的同时手上画画时序图,自己就很明白了,申明一点,自己太懒了没做仿真,说以大家都看不到时序图,自己动手,丰衣足食吗???

module clk_div3(clk_in, rst_n,clk_out);
input clk_in;
input rst;
output clk_out;
/* ************************************************************ */
reg [1:0] cnt, cnt1;
reg clk_1to3p,clk_1to3n;
/* ************************************************************ */
always @ (posedge clk_in or negedge rst) begin
    if(!rst) begin
        cnt <= 2'd0;
        clk_1to3p <= clk_1to3p;
    end
    else begin
        if(cnt == 2'b10) begin
            cnt <= 2'd0;
            clk_1to3p <= clk_1to3p;
        end
        else begin
        cnt <= cnt + 1'b1;
        clk_1to3p <= !clk_1to3p;
        end
    end
end
/* ************************************************************ */
/* ************************************************************ */
always @ (posedge clk_in or negedge rst) begin
    if(!rst) begin
        cnt <= 2'd0;
        clk_1to3n <= clk_1to3n;
    end
    else begin
        if(cnt == 2'b10) begin
            cnt <= 2'd0;
            clk_1to3n <= clk_1to3n;
        end
        else begin
        cnt <= cnt + 1'b1;
        clk_1to3n <= !clk_1to3n;
        end
    end
end
/* ************************************************************ */
assign clk_out = clk_1to3p | clk_1to3n;
/* ************************************************************ */
endmodule
 

我是用SourceInsight写,若有拼写错误不予理会,呵呵

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1790792 2015-4-18 10:40

用户1492114 2013-3-28 21:21

博主的这个程序不是错位异或法,这是相或法。

用户1635818 2013-1-14 10:26

博主你的程序有个原理错误,就是在第二次技术是需要中下降沿触发
相关推荐阅读
残弈悟恩 2018-11-29 18:36
【博客大赛】国产SWM32单片机学习连载(一)
让更多人知道“中国芯”第1章 SWM320控制器简介单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用缩写MCU表示。单片机由运算器、控制...
残弈悟恩 2018-11-22 21:47
签到
2年没来了,既然来了,就签个到...
残弈悟恩 2016-03-25 18:38
评论:@以芯筑未来 博客中提到的“[转]29岁了,继续做个精致的电子工程师”
今天没时间看,先转了,等有时间了,好好拜读一下。...
残弈悟恩 2016-01-11 14:55
【博客大赛】各位网友,你想对EDN网站说点什么?
自荣获2015年EDN最佳博主奖以后,可能太过于自满,就再也没怎么写过博客自己!! 说心里话,肯定不是自满,实在是太忙了,所以只是常来看看,看大家写了什么,有什么最新的科技动态,反正是不想写。...
残弈悟恩 2015-10-23 14:28
评论:@wshr_king's Blog 博客中提到的“CODE RW RO ZI”
积累一下,谢谢楼主。...
EE直播间
更多
我要评论
2
16
关闭 站长推荐上一条 /3 下一条