µ±Ç°Î»ÖãºÊ×Ò³ > 2015ÄêEDA¸´Ï°11
module d_flop(q,d,clr,clk); output q; input d,clr,clk; reg q;
always @(clr) if(!clr) assign q=0; else deassign q;
always @(negedge clk) q=d; endmodule
module shifter(seri_in,clk,clrb,Q); input seri_in,clk,clrb; output[3:0] Q;
d_flop U1(Q[0],seri_in,clrb,clk), U2(Q[1],Q[0],clrb,clk), U3(Q[2],Q[1],clrb,clk), u4(Q[3],Q[2],clrb,clk); endmodule
10. ʹÓÃcase Óï¾äÉè¼Æ°Ë¹¦ÄܵÄËãÊõÔËËãµ¥Ôª(ALU),ÆäÊäÈëÐźÅa ºÍb ¾ùΪ4
룬»¹Óй¦ÄÜÑ¡ÔñÐźÅselect Ϊ3 룬Êä³öÐźÅΪout(5 λ)£¬ËãÊõÔËËãµ¥ÔªALU ËùÖ´ÐеIJÙ×÷Óëselect ÐźÅÓйأ¬¾ßÌå¹ØÏµÈçͼ1 ËùÁÐ(ºöÂÔÊä³ö½á¹ûÖеÄÉÏÒçºÍÏÂÒçµÄλ)¡£ select ÐźŠ3`b000 3`b001 3`b010 3`b011 3`b100 3`b101 3`b110 3`b111 ¹¦ÄÜ Out=a out=a+b out=a-b out=a/b out=a%b out=a<<1 out=a>>1 out=a>b
module ALU(a,b,select,out); input[3:0] a,b; input[2:0] select; output[4:0] out; reg[4:0] out; always @(select) begin
case(select) 3'b000: out=a; 3'b001: out=a+b; 3'b010: out=a-b; 3'b011: out=a/b; 3'b100: out=a%b; 3'b101: out=a<<1; 3'b110: out=a>>1; 3'b111: out=a>b; default:out=5'bx;
endcase end
endmodule
11¡¢ÇëÓÃ$random ÅäºÏÇóÄ£ÔËËã±àд£º
(1)ÓÃÓÚ²âÊÔµÄÌø±äÑØ¶¶¶¯ÎªÖÜÆÚ1/10 µÄʱÖÓ²¨ÐΡ£ (2)Ëæ»ú³öÏÖµÄÂö¿íËæ»úµÄÕÂö¿í¡£
module random_pulse(dout); output[9:0] dout; reg[9:0] dout; integer delay; initial begin
#10 dout=0;
for(k=0;k<100;k=k+1) begin
delay={$random}; #delay dout=1£» #delay dout=0£» end end
endmodule
12¡¢ÓÃVerilogÓïÑÔÉè¼ÆÒ»¸ö¸ñÀ×ÂëÖÁ¶þ½øÖÆÊýµÄת»»Æ÷£¨Èç±í1£©£¬²¢±àд²âÊÔ´úÂë¡£ Ìáʾ£º¸ñÀ×Âëת»»Îª¶þ½øÖÆÂëËã·¨ÊÇ£º´Ó×ó±ßµÚ¶þλÆð£¬½«Ã¿Ò»Î»Óë×ó±ßһλ½âÂëºóµÄÖµ¡°Òì»ò¡±£¬×÷Ϊ¸Ã½âÂëºóµÄÖµ£¨×î×ó±ßµÄһλÒÀÈ»²»±ä£©¡£ ±í1 ¸ñÀ×ÂëÓë¶þ½øÖÆ×ª»» ¸ñÀ×Âë 000 001 011 010 110 111 101 100 ¶þ½øÖÆ 000 001 010 011 100 101 110 111 module gry2bin(Gry,Bin); parameter length = 3; output [length-1:0] Bin; input [length-1:0]Gry ; reg [length-1:0] Bin; integer i; always @ (Gry) begin
Bin[length-1]=Gry[length-1]; for(i=length-2;i>=0;i=i-1) Bin[i]=Bin[i+1]^Gry[i]; end endmodule
`timescale 1ns/1ns `include \ module stimulus; reg[2:0] Gry; wire[2:0]Bin;
gry2bin mycount(Gry,Bin); initial begin Gry=3'b000; #10 Gry=3'b001; #10 Gry=3'b011; #10 Gry=3'b010; #10 Gry=3'b110; #10 Gry=3'b111; #10 Gry=3'b101; #10 Gry=3'b100; #10 $finish; end
initial $monitor($time,\ endmodule
13¡¢Í¼1ËùʾµÄÊÇË«2Ñ¡1¶à·ѡÔñÆ÷¹¹³ÉµÄµç·MUXK¡£¶ÔÓÚÆäÖÐMUX21A£¬µ±s=0ºÍs=1ʱ£¬·Ö±ðÓÐy=aºÍy=b¡£ÊÔÔÚÒ»¸öÄ£¿é½á¹¹ÖÐÓÃÁ½¸ö¹ý³ÌÀ´±í´ï´Ëµç·¡£
¹²·ÖÏí92ƪÏà¹ØÎĵµ