用verilog语言实现两个四位原码的一位乘法

模块ALU4(MOSI、MCLK、MCS、SYSCLK、MISO);

输出MOSI、MCLK、MCS

输入SYSCLK,MISO

导线[3:0] x,y;

电线[2:0]F;

电线CLK;

reg溢出;

reg [3:0]结果;

reg[4:0]temp;

始终@(posedge CLK或negedge复位)

开始

如果(!重置)

开始

结果& lt= 4 ' b0000

溢出& lt= 1 ' B0;

结束

其他

开始

案例(F)

3'b001:

开始

temp = {x[3],x} + {y[3],y };

结果& lt= temp[3:0];

溢出& lt= temp[4] ^温度[3];

结束

3'b010:

开始

temp = {x[3],x} + ~{y[3],y }+1;

结果& lt= temp[3:0];

溢出& lt= temp[4] ^温度[3];

结束

3'b011:

开始

结果& lt= x & ampy;

溢出& lt= 1 ' B0;

结束

3'b100:

开始

结果& lt= x | y;

溢出& lt= 1 ' B0;

结束

3'b101:

开始

结果& lt= x ^ y;

溢出& lt= 1 ' B0;

结束

3'b110:

开始

结果& lt= {1'b0,x[3:1]};

溢出& lt= 1 ' B0;

结束

3'b111:

开始

结果& lt= {x[2:0],1 ' B0 };

溢出& lt= 1 ' B0;

结束

默认值:

开始

结果& lt= 4 ' b0000

溢出& lt= 1 ' B0;

结束

结束案例

结束

结束

赋值RESET = PS[2];

赋值x = SWA[3:0];

赋值y = SWB[3:0];

赋值F = SWA[18:16];

赋值LEDA[4:0]= {溢出,结果};

赋值CLK = PS[0];

电线[7:0] Hex0,Hex1,Hex2,Hex3,Hex4,Hex5,Hex6,Hex7,Hex8,Hex9,Hex10,Hex11,Hex12,Hex13,Hex14,Hex15,Hex16,Hex16

电线[19:0]SWC西南威尔士州西南威尔士州;

电线[19:0]乐达;

wire[3:0]PS;

lcdswip lcdxx(。味噌(味噌),。MOSI(MOSI)。麦克尔克(MCLK)。MCS(MCS)。SYSCLK(系统时钟),

. Hex0(8'h20)、. Hex1(8'h20)、. Hex2(8'h20)、. Hex3(8'h20)、. Hex4(8'h43)、. Hex5(8'h48)、. Hex6(8'h2d)、. Hex7(8'h34)、. Hex8(8'h20)、. Hex9(8'h53)、. Hex165438

. Hex16(8'h20)、. Hex17(8'h20)、. Hex18(8'h20)、. Hex19(8'h20)、. Hex20(8'h20)、. Hex22(8'h20)、. Hex23(8'h20)、. Hex24(8'h20)、. Hex25(8

。乐达(LEDA),。LEDB(LEDB)。LEDC(LEDC)、

。SWA(西南威尔士州)。SWB(SWB)。SWC(SWC)。PS(PS)

);

末端模块