题解 | #位拆分与运算#

题中看到对于sel的不同情况,有几种不同的输出,首先考虑到用case语句。

要注意的是,仅当sel为0时,输入信号有效,因此需要一个寄存器data_temp,在sel为0时对输入信号进行锁存。

下一步编写代码:
复位时,三个信号受到影响,即data_temp清零、validout清零、输出out清零;
sel为0时,将输入的值锁存到data_temp中,同时validout拉低,输出out为0;
sel为1时,validout拉高,同时将锁存后的data_temp按位进行输出out的运算;
sel为2时,validout拉高,同时将锁存后的data_temp按位进行输出out的运算;
sel为3时,validout拉高,同时将锁存后的data_temp按位进行输出out的运算。

整个代码如下:

``` js`timescale 1ns/1ns

`timescale 1ns/1ns

module data_cal(
input clk,
input rst,
input [15:0]d,
input [1:0]sel,

output reg [4:0]out,
output reg validout
);
    reg [15:0]data_temp;
    always@(posedge clk or negedge rst)
        if(!rst)begin
            out<=5'd0;
            validout<=1'b0;
            data_temp<=16'd0;
        end
        else case(sel)
            0:
                begin
                    data_temp<=d;
                    out[4:0]<=5'd0;
                    validout<=1'b0;
                end
            1:
                begin
                    validout<=1'b1;
                    out[4:0]<=data_temp[3:0]+data_temp[7:4];
                end
            2:
                begin
                    validout<=1'b1;
                    out[4:0]<=data_temp[3:0]+data_temp[11:8];
                end
            3:
                begin
                    validout<=1'b1;
                    out[4:0]<=data_temp[3:0]+data_temp[15:12];
                end
            default:
                begin
                    validout<=1'b0;
                    out[4:0]<=5'd0;
                end
        endcase
endmodule
全部评论
default后面的情况前面考虑过了,不需要吧.
1 回复 分享
发布于 2022-06-24 17:30
data_temp<=15'd0; 能是对的?
1 回复 分享
发布于 2022-05-22 23:32
感觉这个时序满足不了。使用always块,out一定是要晚一拍
1 回复 分享
发布于 2024-11-18 20:39 广东
sel刚开始不是00,那data_temp就没有值呀
1 回复 分享
发布于 2023-09-24 11:44 湖南
数组能直接相等?不应该按位赋值吗
点赞 回复 分享
发布于 2022-09-13 18:53 北京

相关推荐

nus22016021404:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q了:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
评论
28
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务