上升沿和下降沿信号发生器Verilog代码

使用两个状态机,一个只在时钟上升沿工作,另一个只在时钟下降沿工作,两个信号相与后产生输出信号。这个电路没有除时钟和复位以外的其他输入信号。

设计代码

`timescale 1ns / 1ps
module Test1448(clk,reset,dout);
input clk;
input reset;
output dout;
reg [1:0] pr_state1,nx_state1;
reg [1:0] pr_state2,nx_state2;
reg dout1,dout2;
parameter s0=0,s1=1,s2=2;

/
always @(posedge clk or posedge reset)
   if(reset)
      pr_state1<=s0;
   else
      pr_state1<=nx_state1;
/
always @(negedge clk or posedge reset)
   if(reset)
      pr_state2<=s0;
   else
      pr_state2<=nx_state2;
/
always @(pr_state1)
   case(pr_state1)
   s0:begin dout1=1; nx_state1=s1;
      end
   s1:begin dout1=1; nx_state1=s2;
      end
   s2:begin dout1=0; nx_state1=s0;
      end
   default:nx_state1=s0;
   endcase
/
always @(pr_state2)
   case(pr_state2)
   s0:begin dout2=0; nx_state2=s1;
      end
   s1:begin dout2=1; nx_state2=s2;
      end
   s2:begin dout2=1; nx_state2=s0;
      end
   default:nx_state2=s0;
   endcase
assign dout=dout1&dout2;
endmodule

测试代码

`timescale 1ns / 1ps
module Test1507;
reg clk;
reg reset;
wire dout;
Test1448 x1(.clk   (clk  ),
            .reset (reset),
            .dout  (dout ));
always begin
   #15 clk=1;
   #15 clk=0;
end

initial begin
   clk=0;
   reset=1;
   #5;
   reset=0;
   #1000;
end
endmodule

产生波形
VIVADO仿真波形
波形图中dout的输出结果是dout1和dout2的与的结果。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值