首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用verilog构建8位ALU

使用verilog构建8位ALU
EN

Stack Overflow用户
提问于 2016-02-22 10:04:29
回答 1查看 225关注 0票数 0

我正在尝试在ALU中构建一个8位数据路径,它可以进行加、减、或和两个操作数。

我想为代码中的每个操作使用一个case语句,但我总是收到错误消息。

到目前为止它看起来是这样的:

代码语言:javascript
复制
    module alu (
      input     [7:0] xa,xb,
      input     [7:0] op_sel,
      input wire ctrl,
      output reg    0Zero, 0Carry,
//0Zero infers latch: can only be assigned to 1/ always reg
      output reg [7:0] result_out,
      );
    always @(*)
    8'hE0 :
    //4 bit for now
        begin
            out = 8'b0;
            0Carry = 1'b0;
            //calculate value
                    case (1) //alu controlled by ctrl signal
                        8'hA0: out = xa&xb;
                        //
                        8'hB0: (0Carry ,out) = xa+xb;
                        //
                        8'hC0: (0Zero , 0Carry, out) = xa-xb;
                        //
                        8'hD0: out = ~(xa|xb);
                        //
                    endcase
                end
EN

回答 1

Stack Overflow用户

发布于 2016-02-22 10:27:19

您的case表达式是1,您应该将其更改为某个变量。下面是一个case语句示例:

代码语言:javascript
复制
reg [1:0] address;
case (address)
  2'b00 : statement1;
  2'b01, 2'b10 : statement2;
  default : statement3;
endcase

如果地址值是2'b00,则将执行statement1。当地址值等于2'b01或2'b10时,执行Statement2。否则,将执行statement3。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35544689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档