题目描述:
在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改。
请用函数实现一个4bit数据大小端转换的功能。实现对两个不同的输入分别转换并输出。
程序的接口信号图如下:
知识点学习:
大小端转换
1)为什么有大小端之分:在计算机系统中,一般以字节为单位,每个地址单元都对应着一个字节(8bit),但是在c语言中就存在,比如:int、char等类型,他们的位数为32bit;又比如一些计算机是16位或者32位的处理器,由于寄存器宽度大于一个字节,那么就会出现如何将多个字节存储的问题。
2)什么时候需要大小端转换:大小端转换一般应用于跨平台通信和资源共享,同一个平台上的开发,它们的数据存放规则和显示规则是一致的,这时不需要考虑大小端的相关问题。但是当出现跨平台时,就需要考虑大小端转换的问题。
自己写的代码:
function [3:0] revrs;
input [3:0] datain;
for(int i=0;i<4;i=i+1)
begin
revrs[i] = datain[3-i];
end
endfunction
assign c = revrs(a);
assign d = revrs(b);
别人正确的代码:
function [3:0] begin_end;
input [3:0] data_in;
begin
begin_end[0] = data_in[3];
begin_end[1] = data_in[2];
begin_end[2] = data_in[1];
begin_end[3] = data_in[0];
end
endfunction
assign c = begin_end(a);
assign d = begin_end(b);
(没太找出来这两个有啥不同,但是上面代码运行结果一直不对)
版权声明:本文为Allcce原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。