前言:这次没有实验材料所以是我自己乱写的,肚子饿了写得挺急的,有错记得dd我!
还有一个问题!welab平台里要拿测试的一百分,要改一段代码,就是上次的多功能运算代码里我提到的带借位减法的c0问题!注意看源代码的注释!
原理
ALU
就是在上次实验的基础上多了S1和S0,而且把所有开关装到一起去统称为ALUop了,就看起来很复杂其实蛮简单的。
源代码
ALU
VirtalBoard模块
这次sv也是要交的,所以复制粘贴的时候记得删改一下不要照搬哟!
`default_nettype none
module VirtualBoard (
input logic CLOCK, // 10 MHz Input Clock
input logic [19:0] PB, // 20 Push Buttons, logical 1 when pressed
input logic [35:0] S, // 36 Switches
output logic [35:0] L, // 36 LEDs, drive logical 1 to light up
output logic [7:0] SD7, // 8 common anode Seven-segment Display
output logic [7:0] SD6,
output logic [7:0] SD5,
output logic [7:0] SD4,
output logic [7:0] SD3,
output logic [7:0] SD2,
output logic [7:0] SD1,
output logic [7:0] SD0
);
localparam N =4;
wire [3:0] ALUop = S[12:9];//要求用ALUop来写啦
wire Cin = S[8];
wire [3:0] X = S[7:4];
wire [3:0] Y = S[3:0];
wire [N-1:0] A,B,F;
wire C0;
wire [N:0] result;
wire SR, SV, SL, M3, M2, M1, M0, S1, S0;
/*assign A = X;
assign B = Y & {N{M0}} | (~Y) & {N{M1}};
assign C0 = M2;//这个从实验材料里抄来的,没啥用的样子,大概是实验材料里没有加法器的版本是这样的*/
always @ ALUop
begin
case(