夏宇闻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

现象:

 

 

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