题解 | #使用函数实现数据大小端转换#

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

http://www.nowcoder.com/practice/74c0c19ad0c444959c436a049647a93c

关于function中嵌套for的语法问题

`timescale 1ns/1ns
module function_mod(
	input [3:0]a,
	input [3:0]b,
	
	output [3:0]c,
	output [3:0]d
);
    function [3 : 0] invert;
        input [3 : 0] in;
        reg [3 : 0] invert;
            integer i;
            for (i = 0; i < 4; i = i + 1)begin
                invert[i] = in[3 - i];
            end
    endfunction
    assign c = invert(a);
    assign d = invert(b);
    

endmodule

第二个因为多加一组begin end 而编译不通过,猜测function中只能有一组beginend,

`timescale 1ns/1ns
module function_mod(
	input [3:0]a,
	input [3:0]b,
	
	output [3:0]c,
	output [3:0]d
);
    function [3 : 0] invert;
        input [3 : 0] in;
        reg [3 : 0] invert;
        begin
            integer i;
            for (i = 0; i < 4; i = i + 1)begin
                invert[i] = in[3 - i];
            end
        end
    endfunction
    assign c = invert(a);
    assign d = invert(b);
    

endmodule

而且function中也不能写成这个形式,不能直接索引位数

`timescale 1ns/1ns
module function_mod(
	input [3:0]a,
	input [3:0]b,
	
	output [3:0]c,
	output [3:0]d
);
    function [3 : 0] invert;
        input [3 : 0] in;
        reg [3 : 0] invert;
        begin
            invert = in[0 : 3];
        end
    endfunction
    assign c = invert(a);
    assign d = invert(b);
    

endmodule
全部评论
不是必须有一个begin-end;因为integer变量声明包括在了第一个begin块内,这是属于SV的语法;解决方法可以将intrger变量声明提到第一个begin上面
2 回复 分享
发布于 2023-02-08 09:25 湖北
上线运行报错的
点赞 回复 分享
发布于 2022-05-30 00:22

相关推荐

后端彭于晏:你无敌了
点赞 评论 收藏
分享
2024-12-29 19:48
河北科技大学 Java
我真的会练有氧:1.如果没有实习经验,项目一个太少了 2.项目的需求描述不要写成用xxx实现了xxx。写明具体的需求功能就可以,除非是你想特别突出让面试官问的问题 3.证书就一个4级没必要摆上去,摆上去显得你就只有一个4级 4.技术栈太少了,且比较简略,可以加点分布式,常用的微服务组件,架构设计等等信息 个人意见,不喜勿喷
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客企业服务