2、LE,RESET;Output[4:0]DATA_OUT;…….作业答案3.6在下面的initial块中,根据每条语句的执行时刻,写出每个变量在仿真过程中和仿真结束时的值。initialbeginA=1'b0;B=1'b1;C=2'b10;D=4'b1100;#10beginA=1'b1;B=1'b0;end#15beginC=#52'b01;end#10beginD=#7{A,B,C};endend作业答案3.6#0A=1’b0,B=1’b1,C=2’b10,D=4’b1100,#10A=1’b1,B=1’b0,C=2’b10,D=4’b1100,#30A=1’b1,B=1’b0,C=2’
3、b01,D=4’b1100,#42A=1’b1,B=1’b0,C=2’b01,D=4’b1001.作业答案3.7定义一个深度为256,位宽为8比特的寄存器型数组,用for语句对该数组进行初始化,要求把所有的偶元素初始化为0,所有的奇元素初始化为1。3.7…….reg[7:0]stage[255:0]initialbeginfor(i=0;i<256;i=i+2)stage[i]=0;for(i=1;i<256;i=i+2)state[i]=1;end作业答案3.8设计一个移位函数,输入一个位宽是32比特的数data,和一个左移、右移的控制信号shift_contr[1:0],shift_co
4、ntr[1]=1,data左移一位,shift_contr[0]=1,data右移一位,函数返回移位后的数值。3.8function[31:0]shiftinput[31:0]data_in;input[1:0]shift_contr;beginif(shift_contr[1])shift=data_in<<1;if(shift_contr[0])shift=data_in>>1;endendfunction作业答案3.10定义一个任务,该任务能计算出一个八位变量的偶校验位作为该任务的输出,计算结束后,经过三个时钟周期将该校验位赋给任务的输出。3.10taskparity(even_bit
5、,odd_bit,input_bus);outputeven_bit,odd_bit;input[7:0]input_bus;regeven_bit,odd_bit,a;beginodd_bit=^input_bus;//产生奇校验位a=~odd_bit;end;//产生偶校验位@(posedge clk)@(posedge clk)@(posedge clk)even_bit=a;endendtask作业答案3.12modulemux4(A,B,C,D,sel,data_sel);parameterwidth=8;input[width-1:0]A,B,C,D;input[1:0]se
6、l;output[width-1:0]data_sel;reg[width-1:0]data_sel;always@(AorBorCorDorsel)begincase(sel)2'b00:data_sel<=A;2'b01:data_sel<=B;2'b10:data_sel<=C;2'b11:data_sel<=D;default:$display("signalisinvalid");endcaseendendmodule作业答案3.12modulemux4(clk,rst,A,B,C,D,sel,data_sel);parameterwidth=8;input[width-1:0]A
7、,B,C,D;input[1:0]sel;inputclk,rst;output[width-1:0]data_sel;wire[width-1:0]data_sel;assigndata_sel=sel[1]?(sel[0]?D:C):(sel[0]?B:A);endmodule作业答案作业答案设计一个序列检测器,用于检测串行输入的二进制序列,每当连续输入三个或三个以上的1时,序列检测器的输出为1,其它情况