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

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

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

相关推荐

01-14 19:01
吉首大学 Java
黑皮白袜臭脚体育生:加个项目吧,一般需要两个项目一业务一轮子呢,简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客企业服务