算术逻辑单元(ALU)的fun88英超代码

上次,算术逻辑单元(alu.)设计和实施 VHDL.。展示了ALU的全VHDL代码。 

今天, fpga4student. 呈现ALU的fun88英超代码。还提供了ALU的TestBench fun88英超代码用于模拟。


Alu的fun88英超代码

Alu的fun88英超代码:

/* ALU Arithmetic and Logic Operations
----------------------------------------------------------------------
|ALU_Sel|   ALU Operation
----------------------------------------------------------------------
| 0000  |   ALU_Out = A + B;
----------------------------------------------------------------------
| 0001  |   ALU_Out = A - B;
----------------------------------------------------------------------
| 0010  |   ALU_Out = A * B;
----------------------------------------------------------------------
| 0011  |   ALU_Out = A / B;
----------------------------------------------------------------------
| 0100  |   ALU_Out = A << 1;
----------------------------------------------------------------------
| 0101  |   ALU_Out = A >> 1;
----------------------------------------------------------------------
| 0110  |   ALU_Out = A rotated left by 1;
----------------------------------------------------------------------
| 0111  |   ALU_Out = A rotated right by 1;
----------------------------------------------------------------------
| 1000  |   ALU_Out = A and B;
----------------------------------------------------------------------
| 1001  |   ALU_Out = A or B;
----------------------------------------------------------------------
| 1010  |   ALU_Out = A xor B;
----------------------------------------------------------------------
| 1011  |   ALU_Out = A nor B;
----------------------------------------------------------------------
| 1100  |   ALU_Out = A nand B;
----------------------------------------------------------------------
| 1101  |   ALU_Out = A xnor B;
----------------------------------------------------------------------
| 1110  |   ALU_Out = 1 if A>B else 0;
----------------------------------------------------------------------
| 1111  |   ALU_Out = 1 if A=B else 0;
----------------------------------------------------------------------*/
// yl315.net: FPGA projects, fun88英超 projects, VHDL. projects
// fun88英超 project: fun88英超 code for ALU
// by FPGA4STUDENT
module alu(
           input [7:0] A,B,  // ALU 8-bit Inputs                 
           input [3:0] ALU_Sel,// ALU Selection
           output [7:0] ALU_Out, // ALU 8-bit Output
           output CarryOut // Carry Out Flag
    );
    reg [7:0] ALU_Result;
    wire [8:0] tmp;
    assign ALU_Out = ALU_Result; // ALU out
    assign tmp = {1'b0,A} + {1'b0,B};
    assign CarryOut = tmp[8]; // Carryout flag
    always @(*)
    begin
        case(ALU_Sel)
        4'b0000: // Addition
           ALU_Result = A + B ; 
        4'b0001: // Subtraction
           ALU_Result = A - B ;
        4'b0010: // Multiplication
           ALU_Result = A * B;
        4'b0011: // Division
           ALU_Result = A/B;
        4'b0100: // Logical shift left
           ALU_Result = A<<1;
         4'b0101: // Logical shift right
           ALU_Result = A>>1;
         4'b0110: // Rotate left
           ALU_Result = {A[6:0],A[7]};
         4'b0111: // Rotate right
           ALU_Result = {A[0],A[7:1]};
          4'b1000: //  Logical and 
           ALU_Result = A & B;
          4'b1001: //  Logical or
           ALU_Result = A | B;
          4'b1010: //  Logical xor 
           ALU_Result = A ^ B;
          4'b1011: //  Logical nor
           ALU_Result = ~(A | B);
          4'b1100: // Logical nand 
           ALU_Result = ~(A & B);
          4'b1101: // Logical xnor
           ALU_Result = ~(A ^ B);
          4'b1110: // Greater comparison
           ALU_Result = (A>B)?8'd1:8'd0 ;
          4'b1111: // Equal comparison   
            ALU_Result = (A==B)?8'd1:8'd0 ;
          default: ALU_Result = A + B ; 
        endcase
    end

endmodule

Alu的TestBench fun88英超代码:

// yl315.net: FPGA projects, fun88英超 projects, VHDL projects
// fun88英超 project: fun88英超 code for ALU
// by FPGA4STUDENT
 `timescale 1ns / 1ps  

module tb_alu;
//Inputs
 reg[7:0] A,B;
 reg[3:0] ALU_Sel;

//Outputs
 wire[7:0] ALU_Out;
 wire CarryOut;
 // fun88英超 code for ALU
 integer i;
 alu test_unit(
            A,B,  // ALU 8-bit Inputs                 
            ALU_Sel,// ALU Selection
            ALU_Out, // ALU 8-bit Output
            CarryOut // Carry Out Flag
     );
    initial begin
    // hold reset state for 100 ns.
      A = 8'h0A;
      B = 4'h02;
      ALU_Sel = 4'h0;
      
      for (i=0;i<=15;i=i+1)
      begin
       ALU_Sel = ALU_Sel + 8'h01;
       #10;
      end;
      
      A = 8'hF6;
      B = 8'h0A;
      
    end
endmodule

alu.的模拟波形:

Alu的fun88英超代码

推荐的 fun88英超 projects:
2. FIFO记忆的fun88英超代码
3. 16位单循环MIPS处理器的fun88英超代码
4. fun88英超 HDL中的可编程数字延迟计时器
5. 数字电路中基本逻辑组件的fun88英超代码
6. 32位无符号分频器的fun88英超代码
7. 用于固定点矩阵乘法的fun88英超代码
8. 在fun88英超 HDL中的板牌识别
9. 携带外观前方乘法器的fun88英超代码
10。 微控制器的fun88英超代码
11.  4x4乘法器的fun88英超代码
12. 停车系统的fun88英超代码
13。 使用fun88英超 HDL对FPGA的图像处理
14。 如何使用fun88英超 HDL将文本文件加载到FPGA中
15。 交通灯控制器的fun88英超代码
16。 FPGA闹钟的fun88英超代码
17。 比较器设计的fun88英超代码
18。 VERILOG代码D触发器
19。 完整加法器的fun88英超代码
20。 与测试台的计数器的fun88英超代码
21。 16位RISC处理器的fun88英超代码
22。 FPGA上的按钮的fun88英超代码
23。 如何为双向/ inout端口编写fun88英超 TestBench
28。 解码器的fun88英超代码
29。 多路复用器的fun88英超代码
30.  fun88英超中的n位加法器设计
31。 fun88英超 vs vhdl.:通过示例解释
32。 FPGA时钟分频器的fun88英超代码
33。 如何在fun88英超中生成时钟使能信号
34。 PWM生成器的fun88英超代码
35。 fun88英超编码VS软件编程
36。 Moore FSM序列检测器的fun88英超代码
37。 Basys 3 FPGA上的7段显示控制器的fun88英超代码
FPGA fun88英超 VHDL课程

4评论:

  1. 当我运行测试台初始添加操作时,以某种方式跳过。如何纠正?

    回复删除
    答案
    1. 我猜你没有"Zoom Fit"看到整个仿真波形。

      删除
  2. 是/,*和%操作员可在fun88英超中合成。他们可以进入真正的fpga

    回复删除
  3. 在2位计算器中有一个程序设计,具有操作添加,减法和乘法吗?

    回复删除

趋势FPGA项目