原创 verilog三分频

2008-6-15 16:55 6831 10 13 分类: FPGA/CPLD
面试的时候 面试管叫又D触发器搭三分频电路,想了半天,没有弄出来,现在自己写了一下。
module div(clk,reset,divclk);
input  clk;
input  reset;
output      divclk;
reg        divclk1;
reg        divclk2;       
reg[1:0]   counter1;
reg[1:0]   counter2;
always@(posedge clk)
begin
 if(!reset)
  counter1<=2'b00;
 else if(counter1==2'b10)

      counter1 <=2'b00;
 
 else
 
     counter1<=counter1+2'b01;

 if(counter1==2'b0)

    divclk1<=~divclk1;

 else if(counter1==2'b10)

    divclk1<=~divclk1;
 
end

always@(negedge clk)
begin
 if(!reset)
 
   counter2<=2'b00;

 else if(counter2==2'b10)
 
   counter2<=2'b00;
 
else
 
   counter2<=counter2+2'b01;
 
 if(counter2==2'b00)
  
       divclk2<=~divclk2;

 else if(counter2==2'b10)
   
    divclk2<=~divclk2;

end



assign divclk=divclk1|divclk2;
endmodule
仿真波形
点击看大图

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户377235 2013-2-11 15:26

这是错的,希望自己确实是正确以后在发表

用户146077 2008-12-31 20:34

这个是大学的时候写的 现在咋一看,当初实在太菜了,复位都是同步复位,呵呵!

用户1544017 2008-12-22 16:48

指出几点问题: 1.楼主的代码有错误,编译都通过不了,不知道你是怎么出波形的 2.if else没完全配对,生成了不少的LATCH.还有ALWAYS块语句中RESET应该算敏感信号吧 3.分析下你的算法是分别设计两个计数器,在0和3的时刻都是取反的,再将两个输出或运算不知道结果正确不.我觉得是将两个计数器的输出相或是没错的,然后根据分频的系数在社顶的时刻将相或的结果取反就OK了. 以上是自己的一些想法,多多交流
相关推荐阅读
用户146077 2009-11-07 20:08
Pi 数值积分C语言算法
一个计算Pi的程序用的是数值积分算法#include <math.h>#include <stdio.h>double f(double x);main(){int     i...
用户146077 2009-05-30 13:54
锁存器 寄存器
第一个是锁存器第二个是寄存器,用两个锁存器组成锁存器aways@(*)beginif(b == 1'b1) c =  a ;end寄存器always @(posedge clk or negedge ...
用户146077 2009-04-17 21:37
cordic 算法的仿真modesim
`timescale 1ns / 1ps////////////////////////////////////////////////////////////////////////////////...
用户146077 2009-04-09 21:24
用加法器实现减法器!
正整數減法與減法器在二進數目系統中,若一整數的最高有效位元(MSB)不是拿來區分正數或負數,那麼此數只能表達為正整數,關於正整數的減法想要用加法來做,首先得建立一個補數(complement)的觀念,...
用户146077 2008-12-31 20:55
FIFO
读地址产生写地址产生状态信息...
用户146077 2008-12-31 20:43
时序分析基础
幻灯片 3  电路设计的难点在时序设计,而时序设计的实质就是满足每一个触发器的建立/保持时间的要求。 Setup Time(Ts):触发器建立时间。即要求数据端信号在时钟信号触发沿到来之前提前到达的最...
我要评论
3
10
关闭 站长推荐上一条 /3 下一条