verilog写题笔记--用generate.for语句简化

使用generate…for语句简化代码

https://www.nowcoder.com/practice/618cb8d16a2c4e87b9e305f6659efe40

这个题的主要目的是考察Verilog语句中的 generate---for循环结构。
首先generate---for结构和普通的for结构并没有什么本质的差别。它两最后综合出来的逻辑图也是相同的,但我在这里还是推荐将所有的循环结构都写成generate--for结构,因为generate--for是手册中比较新的写法,可能会有利于编译。
generate---for的结构如下:
genvar i; //这是必须有的结构,用来声明循环变量i
generate
    for(i=0;i<8;i=i+1)     //这是for循环的基本结构
    begin:any_name     //在for循环中,必须存在begin-end,即使只有一个语句。
                //any_name可以是任何名字,但必须存在。generate本质是将for循环打包成一个子模块,所以必须有一个名字来命名这个for模块
              循环语句1;        //循环语句中也可以加入always@、assign等模块,组合或者时序逻辑都可以。
             循环语句2;
              ...
         
        end  endgenerate                    //在最后要加endgenerate关键词
generate本质就是将一部分语句打包成一个小模块,所以它像endmodule一样存在endgenerate关键词。只不过generate经常与for进行连用,所以就造成了工程上将generate-for看成了一个固定句式了。将数据翻转是generate---for的一个基本应用,代码如下:
`timescale 1ns/1ns
module gen_for_module( 
    input [7:0] data_in,
    output [7:0] data_out
);

genvar i ;
generate
	for(i = 0; i < 8; i = i + 1)
		begin:bit_reverse
			assign data_out[i] = data_in[7-i];
			end
			
endgenerate
    
endmodule




verilog写题笔记 文章被收录于专栏

写Verilog题目的一些笔记备忘

全部评论

相关推荐

牛客383479252号:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务