您的位置:首页 > 其它

数字电路设计之同步电路的一些经验

2014-08-01 20:22 176 查看
在设计的过程中,异步复位电路对硬件要求更低,更容易实现,但是使用同步复位电路却有着诸多优点,使得在实际的工业设计中更多使用的是同步复位电路。使用同步电路一般有以下好处:第一个就是避免毛刺,使用逻辑电路就一定会有毛刺。使用同步电路就有效避免毛刺。第二个就是简化了时序分析,不然有多个时钟,那么时序上就很难分析了。第三个就是减少环境对设计的影响。异步电路易受工作温度,电压的影响,器件延时变化很大。最终可能芯片无法使用。

说了同步电路的优点,那么就说一下怎么设计。设计的时候使用单时钟策略(全局时钟网络)。这里对于全局时钟怎么做,以后会说到PLL。尽量不要用混合时钟。举个栗子,比如你使用以下方法进行采样,结果发现结果颠倒。

module hunhe_clock( clk,din,d_temp,dout );

input wire clk;

input wire [7:0]din;

output reg [7:0]d_temp;

output reg [7:0]dout;



always@(negedge clk)begin

d_temp <= din;

end



always@(posedge clk)begin

dout <= d_temp;

end



endmodule



仿真文件:(这里的仿真结果看出仿真还是对的,那是因为此时仿真没有计算建立保持时间等等)

module hunhe_test;

// Inputs

reg clk;

reg [7:0] din;

// Outputs

wire [7:0] d_temp;

wire [7:0] dout;

// Instantiate the Unit Under Test (UUT)

hunhe_clock uut (

.clk(clk),

.din(din),

.d_temp(d_temp),

.dout(dout)

);

always #50 clk = !clk;

integer i;

initial begin

// Initialize Inputs

clk = 0;

din = 15;

// Wait 100 ns for global reset to finish

#100;

for( i = 0;i <= 10;i=i+1) begin

din = din + 1;

#100;

end

// Add stimulus here

end

endmodule

还有一个需要注意的是不要在模块内部使用计数器分频产生所需要的时钟,这样会导致时钟漂移,降低了设计的可靠性,可以使用对时钟信号进行使能实现所需电路。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: