µÚÒ»·¶ÎÄÍø - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

±±º½verilogÉÏ»úʵÑ鱨¸æ

À´Ô´£ºÓû§·ÖÏí ʱ¼ä£º2025/7/9 5:49:04 ±¾ÎÄÓÉloading ·ÖÏí ÏÂÔØÕâÆªÎĵµÊÖ»ú°æ
˵Ã÷£ºÎÄÕÂÄÚÈݽö¹©Ô¤ÀÀ£¬²¿·ÖÄÚÈÝ¿ÉÄܲ»È«£¬ÐèÒªÍêÕûÎĵµ»òÕßÐèÒª¸´ÖÆÄÚÈÝ£¬ÇëÏÂÔØwordºóʹÓá£ÏÂÔØwordÓÐÎÊÌâÇëÌí¼Ó΢ÐźÅ:xxxxxxx»òQQ£ºxxxxxx ´¦Àí£¨¾¡¿ÉÄܸøÄúÌṩÍêÕûÎĵµ£©£¬¸ÐлÄúµÄÖ§³ÖÓëÁ½⡣

VerilogÉÏ»úʵÑ鱨¸æ

repeat(50) begin

#100 a={$random}%6; b={$random}%6; c={$random}%6; d={$random}%6; end

#100 $stop; end

sort m(.a(a),.b(b),.c(c),.d(d),.ra(ra),.rb(rb),.rc(rc),.rd(rd));

endmodule

------------------------------·½·¨Ò»----------ÎļþÃû sort_ex_tb.v----------------------------------- `timescale 1ns/100ps `define clk_cycle 50

module t_ex; reg [7:0] a;

wire [7:0] ra,rb,rc,rd; reg clk,reset;

always #`clk_cycle clk= ~clk;

initial begin a=0; clk=0; reset =1;

#10 reset=0; #110 reset=1;

repeat(50) begin

#100 a={$random}%6; end

#100 $stop; end

sort_ex sort_ex(clk,reset,ra,rb,rc,rd,a);

endmodule

33

VerilogÉÏ»úʵÑ鱨¸æ

Áù¡¢ ·ÂÕæ²¨ÐÎ

·½·¨Ò»£º

·½·¨¶þ£º

Æß¡¢ ×ܽἰ¶Ô²¨ÐεÄ˵Ã÷

1. ·½·¨Ò»ÊµÑé½áÂÛ

´Ó²¨ÐÎÖпÉÒÔ¿´³ö£¬Ã¿´ÎÊäÈëÒ»×éa£¬b£¬c£¬d£¬¶¼»áÊä³öÒ»×éra£¬rb£¬rc£¬rd¡£²¢ÇÒÓÐra

2. ·½·¨¶þʵÑé½áÂÛ

´Ó²¨ÐÎÖпÉÒÔ¿´³ö£¬Ã¿´Î±È½ÏÍê³ÉÐèÒªËĸöʱÖÓÖÜÆÚÀ´°ÑËĸöÊý¾Ý¶¼ÊäÈë¡£ÔÚÿ¸öʱÖÓÖÜÆÚÖж¼½øÐÐÁËÒ»´Î±È½Ï£¬Ã¿´Î¶¼°Ñ×î´óµÄÊýÒÆµ½rdµÄλÖÃÉÏ¡£ÔÚËĸöʱÖÓÖÜÆÚÍê³Éºó£¬ÓÐra

3. ʵÑé×ܽá

±¾´ÎʵÑéÊÇVerilogÉÏ»úµÄµÚÆß¸öʵÑ飬·Ö±ðÍê³ÉÁ˶Բ¢ÐÐÊäÈëÊý¾ÝºÍ´®ÐÐÊäÈëÊý¾ÝµÄðÅÝÅÅÐòÒÔ¼°²¢ÐÐÊä³ö¡£´ÓЧÂÊÉÏÀ´Ëµ·½·¨Ò»µÄЧÂʱȽϸߣ¬ÒòΪֻÐèÒª½øÐÐÒ»´Î±È½Ï£¬ÐèҪʱ¼ä¶Ì¡£µ«ÊÇ·½·¨¶þÍê³ÉÁË´®ÐÐת²¢ÐеÄÊý¾Ý±ä»»¹¤×÷£¬±È·½·¨Ò»µÄ¹¦ÄܸüÇ¿¡£

34

VerilogÉÏ»úʵÑ鱨¸æ

ʵÑé°Ë ÀûÓÃÓÐÏÞ״̬»ú½øÐÐʱÐòÂß¼­µÄÉè¼Æ

Ò»¡¢ ʵÑéÄ¿µÄ

1. ÕÆÎÕÀûÓÃÓÐÏÞ״̬»úʵÏÖÒ»°ãʱÐòÂß¼­·ÖÎöµÄ·½·¨£»

2. ÕÆÎÕÓÃVerilog±àд¿É×ۺϵÄÓÐÏÞ״̬»úµÄ±ê׼ģ°å£» 3. ÕÆÎÕÓÃVerilog±àд״̬»úÄ£¿éµÄ²âÊÔÎļþµÄÒ»°ã·½·¨

¶þ¡¢ ʵÑéÄÚÈÝ

Éè¼ÆÒ»¸ö´®ÐÐÊý¾Ý¼ì²âÆ÷¡£ÒªÇóÊÇ£ºÁ¬Ðø4¸ö»òÒÔÉÏΪ1ʱÊä³öΪ1£¬ÆäËûÊäÈëÇé¿öÏÂΪ0.±àд²âÊÔÄ£¿é¶ÔÉè¼ÆµÄÄ£¿é½øÐи÷ÖÖ²ã´ÎµÄ·ÂÕæ£¬²¢¹Û²ì²¨ÐΣ¬±àдʵÑ鱨¸æ¡£

Èý¡¢ ¶ÔÈÎÎñµÄÀí½â

±¾ÌâÒªÇóʵÏÖÒ»¸ö´®ÐÐÊý¾Ý¼ì²âÆ÷¡£Ò²¾ÍÊÇÀûÓÃÒ»¸öÓÐÏÞ״̬»ú£¬Ã¿Á¬Ðø³öÏÖÒ»¸ö1×´Ì¬Ìø×ªÒ»´Î¡£µ±Á¬Ðø4¸ö»ò4¸öÒÔÉÏ1ʱ£¬Ëø¶¨ÔÚij¸ö״̬£¬²¢ÇÒÊä³ö1.

ËÄ¡¢ ʵÏÖ˼·

ÓÃÓÐÏÞ״̬»úÍê³ÉÕâ¸öÈÎÎñ£¬ÆäÁ÷³ÌͼÈçÏÂ

in=1&rst=1IDLE in=1&rst=1Ain=1&rst=1Bin=1&rst=1Cin=1&rst=1D 35

VerilogÉÏ»úʵÑ鱨¸æ

Îå¡¢ ´úÂë

4. Ö÷³ÌÐò

---------------------------------------ÎļþÃû check.v--------------------------------------------

module seqdet(in,z,clk,rst); input in,clk,rst; output z;

reg[2:0] state; wire z;

parameter IDLE='d0, A='d1, B='d2, C='d3£»

assign z=((state==C)&&(in==1))? 1:0;

always @ (posedge clk) if(!rst) begin

state<=IDLE; end else

casex(state) IDLE: if(in==1) begin

state<=A; end A: if(in==1) begin

state<=B; end else

begin

state<=IDLE; end B: if(in==1) begin

state<=C; end else

begin

state<=IDLE; end C: if(in==1) begin

36

ËÑË÷¸ü¶à¹ØÓÚ£º ±±º½verilogÉÏ»úʵÑ鱨¸æ µÄÎĵµ
±±º½verilogÉÏ»úʵÑ鱨¸æ.doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ£¬·½±ã¸´ÖÆ¡¢±à¼­¡¢ÊղغʹòÓ¡
±¾ÎÄÁ´½Ó£ºhttps://www.diyifanwen.net/c3c8u77ukmx036ax5ujy4_9.html£¨×ªÔØÇë×¢Ã÷ÎÄÕÂÀ´Ô´£©

Ïà¹ØÍÆ¼ö£º

ÈÈÃÅÍÆ¼ö
Copyright © 2012-2023 µÚÒ»·¶ÎÄÍø °æÈ¨ËùÓÐ ÃâÔðÉùÃ÷ | ÁªÏµÎÒÃÇ
ÉùÃ÷ :±¾ÍøÕ¾×ðÖØ²¢±£»¤ÖªÊ¶²úȨ£¬¸ù¾Ý¡¶ÐÅÏ¢ÍøÂç´«²¥È¨±£»¤ÌõÀý¡·£¬Èç¹ûÎÒÃÇ×ªÔØµÄ×÷Æ·ÇÖ·¸ÁËÄúµÄȨÀû,ÇëÔÚÒ»¸öÔÂÄÚ֪ͨÎÒÃÇ£¬ÎÒÃǻἰʱɾ³ý¡£
¿Í·þQQ£ºxxxxxx ÓÊÏ䣺xxxxxx@qq.com
ÓåICP±¸2023013149ºÅ
Top