如何用verilog来实现倒序输出?(verilog实现反转输出)

输入一个16位的信号in,如何将其从低位到高位输出(即反转顺序输出)为out?

目录

输入一个16位的信号in,如何将其从低位到高位输出(即反转顺序输出)为out?

一、野蛮方法

二、always过程语句中for循环

三、generate例化for循环

一、野蛮方法

        {}位拼接运算符用于将两个或多个信号拼接起来,表示一个整体的信号,如下:

                a = {b[5],b[4:0]}

        意思为 b的最高位b[5]和b的低五位拼接起来,组成的a为6位,相当于:

                a = {b[5],b[4],b[3],b[2],b[1],b[0]}

`timescale 1ns/1ns

module top_module(
    input [15:0] in,
	output [15:0] out
);
assign out = {in[0],in[1],in[2],in[3],in[4],in[5],in[6],in[7],in[8],in[9],in[10],in[11],in[12],in[13],in[14],in[15]};
endmodule

二、always过程语句中for循环

        always 内部用for循环,需要定义interger类型变量,否则有些仿真工具会报错。

`timescale 1ns/1ns

module top_module(
    input [15:0] in,
	output [15:0] out
);
    reg [15:0] out1;
    integer i;
    always @(in)
        begin
            for(i=0;i<=15;i=i+1)
                begin
                    out1[15-i]=in[i];
                end
        end
    assign out=out1;
endmodule

三、generate例化for循环

        for语句在always 外部,或者使用for循环例化模块,需要定义genvar变量,否则有些仿真工具会报错。

`timescale 1ns/1ns

module top_module(
    input [15:0] in,
	output [15:0] out
);
genvar i;
generate
    for(i=0;i<16;i=i+1)
        assign out[i]=in[15-i];
endgenerate
endmodule

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值