夏宇聞verilog第十章答案_練習二

注意,最開始一定要reset一下,否則輸出時鐘沒有初始值,一直都是X。

原書寫法(修改了一下,嘗試了一下forever):

源碼:

module div2(
			clk_in,
			clk_out,
			reset
			);
input clk_in,reset;
output clk_out;

reg clk_out;

always @(posedge clk_in or posedge reset)
begin
	if(reset == 1) clk_out = 1'b0;
	else
		clk_out = ~clk_out;
	
end 

endmodule

仿真代碼:

`timescale 1ns/1ns
module div2tb;
reg clk_in,reset;
wire clk_out;

initial
begin
	clk_in	= 1'h0;
	reset	= 1'h1;
	#20
	reset	= 1'h0;
	
	forever 
	begin
		#10
		clk_in = ~clk_in;
	end
end
div2 mydiv2(
			.clk_in(clk_in),
			.clk_out(clk_out),
			.reset(reset)
			);
endmodule

現象:

按照題意修改後源碼:

module div2(
			clk_in,
			clk_out,
			reset
			);
input clk_in,reset;
output clk_out;

reg clk_out2;
assign clk_out = ~clk_out2;
always @(posedge clk_in or posedge reset)
begin
	if(reset == 1) clk_out2 = 1'b0;
	else
		clk_out2 = ~clk_out2;
	
end 

endmodule

現象:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章