远程FPGA虚拟实验平台用SystemVerilog HDL实现多功能运算器

该博客介绍了使用SystemVerilog在远程FPGA虚拟实验平台上实现多功能运算器的过程。作者详细解释了加减运算的原理,特别是带借位减法和带进位加法的实现,并提供了源代码。代码中定义了控制信号,实现了进位、借位、符号位、零标志和溢出标志的判断。实验中还涉及到了补码运算和溢出条件的检测,最后给出了VirtalBoard模块的实现细节。
摘要由CSDN通过智能技术生成


前言:本次实验只要提交任务二的rbf和sv,所以本文只讲参考材料和任务二的内容,任务一的内容有空再补充

原理

参考材料

在这里插入图片描述
一个简单的加减运算电路,减法采用了补码的形式进行计算。

任务二·多功能运算电路

在这里插入图片描述
按这个表格来算,这里带借位减法需要做到Cin=1时有借位,也就是X和~Y相加后不再加一;而带进位加法需要做到Cin=1时有进位,也就是X和Y相加后再加一。
但事实上带借位减法Cin的借位是反一反的,真讨厌。
在这里插入图片描述
控制信号总结在图里了,大致就这样。这次难点也不是代码(因为我一位位地与运算过去了,我真是个小机灵鬼)。

源代码

参考材料

VirtalBoard模块

/** The input port is replaced with an internal signal **/
wire M   = S[9];
wire [3:0] X = S[7:4];
wire [3:0] Y = S[3:0];

/************* The logic of this experiment *************/
wire [3:0] A,B,F;
wire C0;//进位符号,在这个简单的电路里只用在做减法的时候给反码加一
wire sign, zero, overflow, carryOut;//四个标志
assign A = X;
assign B = Y ^ {
   4{
   M}};//即Y与{M,M,M,M}异或
assign C0 = M;

assign {
   carryOut,F[3:0]} = A + B + C0;  //carryout的进/借位标志就在这里赋值
assign sign = F[3];//如果把电路的数当作有符号数,这就是符号位
assign zero = (F==0) ? 1 : 0;  // ~|F;
assign overflow = (~A[3]) & ~B[3] & F[3] | (A[3]) & B[3] & 
  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值