输入一个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类型变量,否则有些仿真工具会报错。文章来源:https://www.toymoban.com/news/detail-588838.html
`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变量,否则有些仿真工具会报错。文章来源地址https://www.toymoban.com/news/detail-588838.html
`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
到了这里,关于如何用verilog来实现倒序输出?(verilog实现反转输出)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!