牛客VL10 使用函数实现数据大小端转换

题目描述:

在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改。

请用函数实现一个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);

(没太找出来这两个有啥不同,但是上面代码运行结果一直不对)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值