一、2线-4线译码器module counter4(q1,q0,ncr,cp);input cp,ncr;output q1,q0;reg q1,q0;always@(posedge cp or negedge ncr) beginif(~ncr){q1,q0}<=2'b00;else{q1,q0}<={q1,q0}+1'b1;endendmodule二、4选1数据选择器module selector4_1(i0,i1,i2,i3,a1,a0,y); input i0,i1,i2,i3,a1,a0;output y;reg y;always@(a1or a0)begincase({a1,a0})2'b00:y=i0;2'b01:y=i1;2'b10:y=i2;2'b11:y=i3;default:y=0;一、2线-4线译码器module counter4(q1,q0,ncr,cp);input cp,ncr;output q1,q0;reg q1,q0;always@(posedge cp or negedge ncr) beginif(~ncr){q1,q0}<=2'b00;else{q1,q0}<={q1,q0}+1'b1;endendmodule二、4选1数据选择器module selector4_1(i0,i1,i2,i3,a1,a0,y); input i0,i1,i2,i3,a1,a0;output y;reg y;always@(a1or a0)begincase({a1,a0})2'b00:y=i0;2'b01:y=i1;2'b10:y=i2;2'b11:y=i3;default:y=0;endcaseendendmodule三、8线-3线优先编码器module encoder8_3(i,y,ei,eo,gs); input[7:0]i;input ei;output[2:0]y;output eo;output gs;reg[2:0]y;reg eo,gs;always@(ei or i)beginif(ei==1'b1)begin{y,eo,gs}=5'b111_11;endelse if(i[7:0]==8'b1111_1111) begin{y,eo,gs}=5'b111_01;endelse if(i[7]==1'b0)begin{y,eo,gs}=5'b000_10;endelse if(i[6]==1'b0)begin{y,eo,gs}=5'b001_10;endelse if(i[5]==1'b0)begin{y,eo,gs}=5'b010_10;endelse if(i[4]==1'b0)begin{y,eo,gs}=5'b011_10;endelse if(i[3]==1'b0)begin{y,eo,gs}=5'b100_10;endelse if(i[2]==1'b0)begin{y,eo,gs}=5'b101_10;endelse if(i[1]==1'b0)begin{y,eo,gs}=5'b110_10;endelse if(i[0]==1'b0)begin{y,eo,gs}=5'b111_10;endendendmodule四、模10加法计数器和一个时钟10分频电路1、模10加法计数器cnt_10的Verilog代码module count_10(clk,reset,dout);input clk;input reset;output[3:0]dout;reg[3:0]dout;always@(posedge clk or negedge reset)beginif(~reset)dout<=4'b0000;elseif(dout<4'b1001)dout<=dout+1;elseif(dout==4'b1001)dout<=4'b0000;endendmodule2、10分频模块fenpin_10的Verilog代码module fenpin_10(clk_in,reset,clk_out); input clk_in;input reset;output[0:0]clk_out;reg[0:0]clk_out;reg[3:0]count;always@(posedge clk_in or negedge reset) beginif(~reset)count<=4'b0000;elseif(count<4'b1001)count<=count+1;elseif(count==4'b1001)begincount<=4'b0000;clk_out<=~clk_out;endendendmodule五、10110101序列发生器module generator(clk,endcaseendendmodule三、8线-3线优先编码器module encoder8_3(i,y,ei,eo,gs); input[7:0]i;input ei;output[2:0]y;output eo;output gs;reg[2:0]y;reg eo,gs;always@(ei or i)beginif(ei==1'b1)begin{y,eo,gs}=5'b111_11;endelse if(i[7:0]==8'b1111_1111) begin{y,eo,gs}=5'b111_01;endelse if(i[7]==1'b0)begin{y,eo,gs}=5'b000_10;endelse if(i[6]==1'b0)begin{y,eo,gs}=5'b001_10;else if(i[5]==1'b0)begin{y,eo,gs}=5'b010_10;endelse if(i[4]==1'b0)begin{y,eo,gs}=5'b011_10;endelse if(i[3]==1'b0)begin{y,eo,gs}=5'b100_10;endelse if(i[2]==1'b0)begin{y,eo,gs}=5'b101_10;endelse if(i[1]==1'b0)begin{y,eo,gs}=5'b110_10;endelse if(i[0]==1'b0)begin{y,eo,gs}=5'b111_10;endendendmodule四、模10加法计数器和一个时钟10分频电路1、模10加法计数器cnt_10的Verilog代码module count_10(clk,reset,dout);input clk;input reset;output[3:0]dout;reg[3:0]dout;always@(posedge clk or negedge reset)beginif(~reset)dout<=4'b0000;elseif(dout<4'b1001)dout<=dout+1;elseif(dout==4'b1001)dout<=4'b0000;endmodule2、10分频模块fenpin_10的Verilog代码module fenpin_10(clk_in,reset,clk_out); input clk_in;input reset;output[0:0]clk_out;reg[0:0]clk_out;reg[3:0]count;always@(posedge clk_in or negedge reset) beginif(~reset)count<=4'b0000;elseif(count<4'b1001)count<=count+1;elseif(count==4'b1001)begincount<=4'b0000;clk_out<=~clk_out;endendendmodule五、10110101序列发生器module generator(clk,clr,dout);input clk;input clr;output dout;reg dout;reg[7:0]temp;always@(posedge clk or negedge clr) beginif(~clr)begindout<=1'b0;temp<=8'b10110101;endelsebegintemp<=temp<<1;temp[0]<=temp[7];dout<=temp[7];endendendmodule六、利用状态机设计一个1011序列检测器module detec1101(clk,reset,din,get1101); input clk;input reset;input din;output get1101;reg get1101;reg[2:0]current_state;reg[2:0]next_state;parameter IDLE=3'b000,S1=3'b001,S2=3'b010,S3=3'b100,s4=3'b100;always@(posedge clk or negedge reset)beginif(~reset)current_state<=IDLE;elsecurrent_state<=next_state;endalways@(din or current_state or next_state)beginnext_state=3'b111;case(current_state)IDLE:next_state=(din==1'b1)?S1:IDLE;S1:next_state=(din==1'b1)?S2:IDLE;S2:next_state=(din==1'b1)?S2:S3;S3:next_state=(din==1'b1)?s4:IDLE;s4:next_state=(din==1'b1)?S1:IDLE;default:next_state=IDLE;endcaseendalways@(posedge clk)begincase(next_state)s4:get1101<=1'b1;IDLE,S1,S2,S3:get1101<=1'b0;default:get1101<=1'b0;endcaseend endmodule。