|
楼主 |
发表于 2015-5-28 07:35:37
|
显示全部楼层
本书更正错误 Page 347,33.4
例子:同步多位数据
module sync_data
#(parameter width = 1)
(input in_rst_n,
input in_clk,
input in_pulse,
input [width-1:0] in_data,
input out_rst_n,
input out_clk,
output [width-1:0] out_data);
wire out_pulse;
sync_pulse sync_pulse_i
(.in_rst_n (in_rst_n),
.in_clk (in_clk),
.in_pulse (in_pulse),
.out_rst_n (out_rst_n),
.out_clk (out_clk),
.out_pulse (out_pulse) );
reg [width-1:0] R0_data;
reg [width-1:0] R1_data;
always @(posedge out_clk or negedge out_rst_n)
begin
if (!out_rst_n) begin
R0_data <= 0;
R1_data <= 0;
end
else if (out_pulse) begin
R0_data <= in_data;
R1_data <= R0_data;
end
end
assign out_data = R1_data;
endmodule
改为如下,
例子:同步多位数据
module sync_data
#(parameter width = 1)
(input in_rst_n,
input in_clk,
input in_pulse,
input [width-1:0] in_data,
input out_rst_n,
input out_clk,
output [width-1:0] out_data);
wire out_pulse;
sync_pulse sync_pulse_i
(.in_rst_n (in_rst_n),
.in_clk (in_clk),
.in_pulse (in_pulse),
.out_rst_n (out_rst_n),
.out_clk (out_clk),
.out_pulse (out_pulse) );
reg [width-1:0] R_data;
always @(posedge out_clk or negedge out_rst_n)
begin
if (!out_rst_n)
R_data <= 0;
else if (out_pulse)
R_data <= in_data;
end
assign out_data = R_data;
endmodule |
|