常用基本电路

基本电路总结

1、握手信号:

 1 module handshack
 2 (
 3     input clk,
 4     input rst_n,
 5     input req,
 6     input [7:0] datain,
 7     output ack,
 8     output [7:0] dataout
 9 );
10  
11 reg reqr1,reqr2,reqr3;
12 reg [7:0] dataoutr;
13 reg ackr;
14  
15 always @ (posedge clk,negedge rst_n)
16 if(!rst_n)
17     {reqr3,reqr2,reqr1} <= 3'b111;
18 else
19     {reqr3,reqr2,reqr1} <= {reqr2,reqr1,req};
20  
21 wire pos_req1 =reqr1 & ~reqr2;
22 wire pos_req2 =reqr2 & ~reqr3;
23 assign dataout = dataoutr;
24 assign ack =ackr;
25  
26 always @ (posedge clk,negedge rst_n)
27 if(!rst_n)
28     dataoutr <= 8'h00;
29 else if(pos_req1) 
30     dataoutr<= datain;
31  
32 always @ (posedge clk,negedge rst_n)
33 if(!rst_n)
34     ackr <= 1'b0;
35 else if(pos_req2)
36     ackr <= 1'b1;
37 else if(!req)
38     ackr <= 1'b0;
39 endmodule

 

2、跨时钟域的握手通信电路:

3、异步复位同步释放:

首先分析一下异步复位为什么会引入亚稳态,异步复位信号在释放的时候,如果正好与时钟的采样沿对齐的话,那么由于不确定复位信号释放之后,到底是复位的值,还是采样的新的值。对于级联的寄存器,这种问题就更加难以确定。这就是异步释放引入的亚稳态。

复位信号由时钟进行同步,要么延迟一拍复位,要么立即复位。

更好的复位方式,由于置位端ENA比数据端D更容易使得复位输出稳定。

 

4、门控时钟的方案:

实质上是为了消除时钟上窄的脉冲!后面将波形示意图补充完整。

posted on 2016-03-27 22:01  hematologist  阅读(452)  评论(0编辑  收藏  举报

导航