System verilog 如何在系统verilog中设置时钟相位?
在系统verilog中,可以通过以下代码初始化时钟并使其滴答作响:System verilog 如何在系统verilog中设置时钟相位?,system-verilog,System Verilog,在系统verilog中,可以通过以下代码初始化时钟并使其滴答作响: bit clk; initial begin clk <= 0; end always #CLOCK_SEMI_PERIOD begin clk <= ~clk; end 我不能写这样的东西: module top(output bit clk1,clk2); parameter CLOCK1_SEMI_PERIOD = 10; parameter CLOCK2_SEMI_PERI
bit clk;
initial begin
clk <= 0;
end
always #CLOCK_SEMI_PERIOD begin
clk <= ~clk;
end
我不能写这样的东西:
module top(output bit clk1,clk2);
parameter CLOCK1_SEMI_PERIOD = 10;
parameter CLOCK2_SEMI_PERIOD = 13;
int phase;
initial begin
clk1 <= 0;
clk2 <= 0;
phase = $urandom_range(9);
end
always #(CLOCK1_SEMI_PERIOD) begin
clk1 <= ~clk1;
end
always #(CLOCK2_SEMI_PERIOD) begin
#phase;
clk2 <= ~clk2;
end
endmodule
模块顶部(输出位clk1、clk2);
参数CLOCK1\u SEMI\u PERIOD=10;
参数CLOCK2\u SEMI\u PERIOD=13;
int相;
初始开始
clk1使用初始/永久
循环
initial begin
clk1 <= 0;
clk2 <= 0;
phase = $urandom_range(9);
fork
forever #(CLOCK1_SEMI_PERIOD)
clk1 <= ~clk1;
#phase forever #(CLOCK2_SEMI_PERIOD)
clk2 <= ~clk2;
join
end
初始开始
clk1使用初始/永久
循环
initial begin
clk1 <= 0;
clk2 <= 0;
phase = $urandom_range(9);
fork
forever #(CLOCK1_SEMI_PERIOD)
clk1 <= ~clk1;
#phase forever #(CLOCK2_SEMI_PERIOD)
clk2 <= ~clk2;
join
end
初始开始
clk1分配偏差概念也可用于引入所需阶段
module top(output bit clk1,clk2);
parameter CLOCK1_SEMI_PERIOD = 10;
parameter CLOCK2_SEMI_PERIOD = 13;
int phase;
reg temp_1_clk2;//Added
wire temp_2_clk2;//Added
initial begin
clk1 <= 0;
clk2 <= 0;
phase = $urandom_range(9);
temp_1_clk2 = 0;
end
always #(CLOCK1_SEMI_PERIOD) begin
clk1 <= ~clk1;
end
always #(CLOCK2_SEMI_PERIOD) begin
temp_1_clk2 <= ~ temp_1_clk2;
end
assign #(phase) temp_2_clk2 = temp_1_clk2;//Introduces the required phase
always @(temp_2_clk2) begin //Output the clock
clk2 = ~ temp_2_clk2;
end
endmodule
模块顶部(输出位clk1、clk2);
参数CLOCK1\u SEMI\u PERIOD=10;
参数CLOCK2\u SEMI\u PERIOD=13;
int相;
注册临时1号注册clk2//补充
电线温度(2)clk2//补充
初始开始
clk1分配偏差概念也可用于引入所需阶段
module top(output bit clk1,clk2);
parameter CLOCK1_SEMI_PERIOD = 10;
parameter CLOCK2_SEMI_PERIOD = 13;
int phase;
reg temp_1_clk2;//Added
wire temp_2_clk2;//Added
initial begin
clk1 <= 0;
clk2 <= 0;
phase = $urandom_range(9);
temp_1_clk2 = 0;
end
always #(CLOCK1_SEMI_PERIOD) begin
clk1 <= ~clk1;
end
always #(CLOCK2_SEMI_PERIOD) begin
temp_1_clk2 <= ~ temp_1_clk2;
end
assign #(phase) temp_2_clk2 = temp_1_clk2;//Introduces the required phase
always @(temp_2_clk2) begin //Output the clock
clk2 = ~ temp_2_clk2;
end
endmodule
模块顶部(输出位clk1、clk2);
参数CLOCK1\u SEMI\u PERIOD=10;
参数CLOCK2\u SEMI\u PERIOD=13;
int相;
注册临时1号注册clk2//补充
电线温度(2)clk2//补充
初始开始
clk1