Verilog MIPS32 CPU(三)-- ALU
- Verilog MIPS32 CPU(一)-- PC寄存器
- Verilog MIPS32 CPU(二)-- Regfiles
- Verilog MIPS32 CPU(三)-- ALU
- Verilog MIPS32 CPU(四)-- RAM
- Verilog MIPS32 CPU(五)-- CP0
- Verilog MIPS32 CPU(六)-- MDU
- Verilog MIPS32 CPU(七)-- DIV、DIVU
- Verilog MIPS32 CPU(八)-- 控制器
module alu(
input [:] a, //OP1
input [:] b, //OP2
input [:] aluc, //controller
output [:] r, //result
output zero,
output carry,
output negative,
output overflow); parameter Addu = 'b0000; //r=a+b unsigned
parameter Add = 'b0010; //r=a+b signed
parameter Subu = 'b0001; //r=a-b unsigned
parameter Sub = 'b0011; //r=a-b signed
parameter And = 'b0100; //r=a&b
parameter Or = 'b0101; //r=a|b
parameter Xor = 'b0110; //r=a^b
parameter Nor = 'b0111; //r=~(a|b)
parameter Lui1 = 'b1000; //r={b[15:0],16'b0}
parameter Lui2 = 'b1001; //r={b[15:0],16'b0}
parameter Slt = 'b1011; //r=(a-b<0)?1:0 signed
parameter Sltu = 'b1010; //r=(a-b<0)?1:0 unsigned
parameter Sra = 'b1100; //r=b>>>a
parameter Sll = 'b1110; //r=b<<a
parameter Srl = 'b1101; //r=b>>a parameter bits=;
parameter ENABLE=,DISABLE=; reg [:] result;
wire signed [:] sa=a,sb=b; always@(*)begin
case(aluc)
Addu: begin
result=a+b;
end
Subu: begin
result=a-b;
end
Add: begin
result=sa+sb;
end
Sub: begin
result=sa-sb;
end
Sra: begin
if(a==) {result[:],result[]}={b,'b0};
else {result[:],result[]}=sb>>>(a-);
end
Srl: begin
if(a==) {result[:],result[]}={b,'b0};
else {result[:],result[]}=b>>(a-);
end
Sll: begin
result=b<<a;
end
And: begin
result=a&b;
end
Or: begin
result=a|b;
end
Xor: begin
result=a^b;
end
Nor: begin
result=~(a|b);
end
Sltu: begin
result=a<b?:;
end
Slt: begin
result=sa<sb?:;
end
Lui1,Lui2: result = {b[:], 'b0};
default:
result=a+b;
endcase
end assign r=result[:];
assign carry = result[];
assign zero=(r=='b0)?1:0;
assign negative=result[];
assign overflow=result[];
endmodule
Verilog MIPS32 CPU(三)-- ALU的更多相关文章
- Verilog MIPS32 CPU(八)-- 控制器
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(六)-- MDU
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(七)-- DIV、DIVU
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(五)-- CP0
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(四)-- RAM
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(二)-- Regfiles
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(一)-- PC寄存器
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(九)-- 顶层文件
`timescale 1ns / 1ps /////////////////////////////////////////////////////////////////////////////// ...
- 【第一季】CH06_FPGA设计Verilog基础(三)
[第一季]CH06_FPGA设计Verilog基础(三) 一个完整的设计,除了好的功能描述代码,对于程序的仿真验证是必不可少的.学会如何去验证自己所写的程序,即如何调试自己的程序是一件非常重要的事情. ...
随机推荐
- 星型打分插件 bootstrap-rating-input
最近帮人实现一个打分的功能,发现bootstrap-rating-input是个简单又好用的星型打分,我对其做了些定制,添加了分值说明,并修改了样式,毕竟 bootstrap 自身的黑色五角星还是不够 ...
- Java语言主要特点有哪些?
1.简单 Java最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了.Java语言的简单性主要体现在以下三个方面: 1) Java的风格类似于C++,因而C++程序员是非常熟悉的.从某 ...
- TCP/IP协议详解之广播和多播
广播和多播仅应用于 U D P,它们对需将报文同时传往多个接收者的应用来说十分重要.T C P是一个面向连接的协议,它意味着分别运行于两主机(由 I P地址确定)内的两进程(由端口号确定)间存在一条连 ...
- winform频繁刷新导致界面闪烁解决方法
转自龙心文 原文 winform频繁刷新导致界面闪烁解决方法 一.通过对窗体和控件使用双缓冲来减少图形闪烁(当绘制图片时出现闪烁时,使用双缓冲) 对于大多数应用程序,.NET Framework 提供 ...
- Maven Profiles 定义不同环境的参数变量
应用场景 我们在开发的时候会遇到需要区分正式环境.测试环境.开发环境使用不同的参数,如数据库的用户名及密码等.这时可以用Spring 的PropertyPlaceholderConfigurer 来配 ...
- SaltStack 的通讯及安全机制
SaltStack 的通讯架构模型: Salt 采用服务端-代理的通讯模型(也可以通过 SSH 方式实现非代理模式).服务端称为 Salt master,代理端称为 Salt minion. Salt ...
- svn: Can't connect to host
关于“svn: Can't connect to host '*.*.*.*': 由于连接方在一段时间后没有正确答复或连接”的解决方法 阿里云服务器环境(PHP+Nginx+MySQL) [原因1 ...
- 671. Second Minimum Node In a Binary Tree 非递减二叉树中第二小的元素
[抄题]: Given a non-empty special binary tree consisting of nodes with the non-negative value, where e ...
- linux系统软件版本升级
在安装完软件之后,在同一层目录生成一个符号链接,并把当前软件的目录映射到这个链接上,后面的操作都只通过这个链接去做,以后升级版本的时候,把最新的软件目录映射到这个链接上就可以了. 如我刚装的apach ...
- xStream完美转换XML、JSON(转)
xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...