VL4 移位运算与乘法

VL4 移位运算与乘法

题目描述:
已知d为一个8位数,请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效(d给出的信号的上升沿表示写入有效)
在这里插入图片描述
思路:每时每刻计算new_out,用时序逻辑赋值给out

`timescale 1ns/1ns
module multi_sel(
input [7:0]d ,
input clk,
input rst,
output reg input_grant,
output reg [10:0]out
);
//*************code***********//
reg [1:0] cnt ;
reg [10:0] new_out = 0;
reg [7:0] dt;
always @(posedge clk, negedge rst)
    if(!rst ) out <= 0; 
    else
        out <= new_out;


always @(posedge  clk) 
    if(!rst) cnt <= 0;
    else begin
        if (cnt == 2'b11) cnt <= 0;
        else   cnt <= cnt +1'b1;
    end

always @(* )begin
    if(!rst) dt = 0;
    else   
    dt = (cnt == 0)?d : dt;
end
always @(* )begin
    case(cnt)
    2'b00: new_out = dt;
    2'b01: new_out = dt* 2'd3;
    2'b10: new_out = dt  * 3'd7;
    2'b11: new_out = dt  * 4'd8;
    default: new_out = 0;
    endcase
    
end

always @(* )begin
    input_grant = (rst)&(cnt == 1'd1);
end
//*************code***********//
endmodule

其中,input_grant也可以这样:

always @(posedge clk , negedge rst )begin
    input_grant <= (rst)&(cnt == 1'd0);
end
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值