ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2026/2/14 8:17:05ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£
Ŀ¼
ʵÑéÒ» ................................................ 2 ʵÑé¶þ ................................................ 9 ʵÑéÈý ............................................... 21 ʵÑéËÄ ............................................... 44
ʵÑéÒ»
ʵÑéÄ¿µÄ£ºÊìϤӲ¼þ¿ª·¢Á÷³Ì£¬ÕÆÎÕModelsimÉè¼ÆÓë·ÂÕæ»·¾³£¬Ñ§»á¼òµ¥×éºÏÂß¼µç·¡¢¼òµ¥Ê±ÐòÂß¼µç·Éè¼Æ£¬²»ÒªÇóÕÆÎÕ×ۺϺÍ×ۺϺó·ÂÕæ¡£ ʵÑéÄÚÈÝ£º±Ø×öʵÑ飺Á·Ï°Ò»¡¢¼òµ¥µÄ×éºÏÂß¼Éè¼Æ
Á·Ï°¶þ¡¢¼òµ¥·ÖƵʱÐòÂß¼µç·µÄÉè¼Æ
Ñ¡×öʵÑ飺ѡ×öÒ»¡¢Á·Ï°Ò»µÄÁ·Ï°Ìâ
Ñ¡×ö¶þ¡¢ 7¶ÎÊýÂë¹ÜÒëÂëµç·
Á·Ï°Ò»¡¢¼òµ¥µÄ×éºÏÂß¼Éè¼Æ
ÃèÊöÒ»¸ö¿É×ۺϵÄÊý¾Ý±È½ÏÆ÷£¬±È½ÏÊý¾Ýa ¡¢bµÄ´óС£¬ÈôÏàͬ£¬Ôò¸ø³ö½á¹û1£¬·ñÔò¸ø³ö½á¹û0¡£ ʵÑé´úÂ룺 Ä£¿éÔ´´úÂ룺
module compare(equal,a,b); input a,b; output equal;
assign equal=(a==b)?1:0; endmodule ²âÊÔÄ£¿éÔ´´úÂ룺 `timescale 1ns/1ns `include \module t; reg a,b; wire equal; initial begin a=0; b=0; #100 a=0;b=1; #100 a=1;b=1;
2
#100 a=1;b=0; #100 a=0;b=0; #100 $stop; end
compare m(.equal(equal),.a(a),.b(b)); endmodule ʵÑ鲨ÐÎ
Á·Ï°¶þ¡¢¼òµ¥·ÖƵʱÐòÂß¼µç·µÄÉè¼Æ
ÓÃalways¿éºÍ@(posedge clk)»ò@(negedge clk)µÄ½á¹¹±íÊöÒ»¸ö1/2·ÖƵÆ÷µÄ¿É×ÛºÏÄ£ÐÍ£¬¹Û²ìʱÐò·ÂÕæ½á¹û¡£ ʵÑé´úÂ룺 Ä£¿éÔ´´úÂ룺
module halfclk(reset,clkin,clkout); input clkin,reset; output clkout; reg clkout; always@(posedge clkin) begin if(!reset) clkout=0; else clkout=~clkout; end endmodule ²âÊÔÄ£¿éÔ´´úÂ룺 `timescale 1ns/100ps `define clkcycle 50 module tt; reg clkin,reset; wire clkout;
3
always #`clkcycle clkin=~clkin; initial begin clkin=0; reset=1; #10 reset=0; #110 reset=1; #100000 $stop; end
halfclk m0(.reset(reset),.clkin(clkin),.clkout(clkout)); endmodule
ʵÑ鲨ÐΣº
Á·Ï°Ìâ1£ºÉè¼ÆÒ»¸ö×Ö½Ú£¨8룩µÄ±È½ÏÆ÷¡£ÒªÇ󣺱ȽÏÁ½¸ö×ֽڵĴóС£¬²¢¸Äд²âÊÔÄ£ÐÍ£¬Ê¹ÆäÄܽøÐбȽÏÈ«ÃæµÄ²âÊÔ¡£¹Û²ìRTL¼¶·ÂÕæ¡¢×ۺϺóÃż¶·ÂÕæºÍ²¼Ïߺó·ÂÕæÓÐʲô²»Í¬£¬²¢ËµÃ÷²»Í¬µÄÔÒò¡£´ÓÎļþϵͳÖвéÔÄ×Ô¶¯Éú³ÉµÄcompare.vm,compare.voÎļþºÍcompare.vÎļþ×÷±È½Ï£¬Ëµ³ö²»Í¬µãºÍÏàͬµã¡£
ʵÑé´úÂ룺 Ä£¿éÔ´´úÂ룺
module compare1(equal,a,b); input [7:0]a,b; output equal;
assign equal=(a>b)?1:0; endmodule ²âÊÔÄ£¿éÔ´´úÂ룺 `timescale 1ns/1ns
4