VL10 使用函数实现数据大小端转换
- 题目
- 题解(41)
- 讨论(29)
- 排行
中等 通过率:14.13%
描述
在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改。
请用函数实现一个4bit数据大小端转换的功能。实现对两个不同的输入分别转换并输出。
程序的接口信号图如下:
使用Verilog HDL实现以上功能并编写testbench验证。
输入描述:
clk:系统时钟
rst_n:异步复位信号,低电平有效
a,b:4bit位宽的无符号数
输出描述:
c,d:8bit位宽的无符号数
`timescale 1ns/1ns
module function_mod(
input [3:0]a,
input [3:0]b,
output [3:0]c,
output [3:0]d
);
assign c = data_rev(a) ;
assign d = data_rev(b) ;
function [3:0] data_rev ; //设计一共函数模块供程序调用
input [3:0] data_in ;
begin
data_rev[0] = data_in[3];
data_rev[1] = data_in[2];
data_rev[2] = data_in[1];
data_rev[3] = data_in[0];
end
endfunction
endmodule
本文设计一个大小段函数进行转换,输入的高位,转换到输出的低位进行转换,function 与endfunction 中函数体用于描述函数功能,与C语言中的函数转移有点相似