当前位置: 首页> 汽车> 维修 > 福建省人民政府征兵办公室官网_高端网页设计人才_app营销策划方案_品牌推广和营销推广

福建省人民政府征兵办公室官网_高端网页设计人才_app营销策划方案_品牌推广和营销推广

时间:2025/7/13 6:51:23来源:https://blog.csdn.net/szyugly/article/details/146379170 浏览次数: 0次
福建省人民政府征兵办公室官网_高端网页设计人才_app营销策划方案_品牌推广和营销推广

文章目录

  • 一、通过VScode编写Verilog代码
  • 二、模块化编程
  • 三、代码示例

一、通过VScode编写Verilog代码

1、下载Vscode
2、下载相关插件
请添加图片描述
搜索Verilog就会弹出有如图所示的插件,下载并安装
3、创建Quartus项目
4、创建完成后点击Tools,选择Options
请添加图片描述
然后在如图所示中,选择VScode.exe所在路径,并在后面添加-r -g %f:%l
5、创建新的Verilog文件,然后会自动跳转VScode
请添加图片描述
6、在你项目路径下右键新建txt文件(文件名自己命名,不必要跟我一样),再把后缀改为.v
请添加图片描述
7、在VScode中点击FIle,然后点击openfIle,然后找到这个文件,打开
请添加图片描述
8、在这个文件里面编写Verilog代码,编写完成后ctrl+s保存,然后回到Quartus
9、右键点击Files,点击三个点,然后找到刚才的文件,添加,添加的文件会显示在下面,至于这里的文件为啥突然变名字了,后文会讲到
请添加图片描述
然后就可以在Quartus里面点击
请添加图片描述
到此为止,将VScode与Quartus结合就结束了

二、模块化编程

1、如图所示,分别有三个.v文件,就是分别三个模块
请添加图片描述
看着是不是有一种熟悉感,我的理解即是类似c语言那种函数调用,又类似C++的类封装,需要用的时候就拿出来用。
2、这里的m_design就是刚才的top,代表顶层模块,就是最主要的模块,另外两个模块就是分别实现其他功能的模块,当然可以有很多个次要模块。
3、需要注意的是顶层模块的模块名需要与工程名相同,但其他模块就没有要求
4、只需要重复上述创建模块的流程即可完成多模块的创建

三、代码示例

//顶层模块
module m_design(input  wire       clk,     input  wire       rst_n,   input  wire       key,     output wire [5:0] led      
);wire en_1hz;  clk_divider(.clk   (clk),.rst_n (rst_n),.en    (en_1hz)
);led_controller(.clk   (clk),.rst_n (rst_n),.en    (en_1hz),.key   (key),.led   (led)
);endmodule//次要模块
module led_controller(input  wire       clk,input  wire       rst_n,input  wire       en,      input  wire       key,    output reg  [5:0] led
);reg [5:0] state;      
reg pause_flag;       
reg [2:0] key_sync;   
wire key_negedge;    always @(posedge clk or negedge rst_n) beginif (!rst_n) key_sync <= 3'b111;else key_sync <= {key_sync[1:0], key}; 
endassign key_negedge = (key_sync[2:1] == 2'b10);always @(posedge clk or negedge rst_n) beginif (!rst_n)pause_flag <= 0;else if (key_negedge)pause_flag <= ~pause_flag;
endalways @(posedge clk or negedge rst_n) beginif (!rst_n) beginstate <= 6'b000001; end else if (en && !pause_flag) beginstate <= {state[4:0], state[5]};  end
endalways @(posedge clk) beginled <= state;  
endendmodule//次要模块
module clk_divider(input  wire clk,   input  wire rst_n,output reg  en     
);parameter CLK_FREQ = 50_000_000; 
localparam CNT_MAX = CLK_FREQ - 1; reg [25:0] cnt; always @(posedge clk or negedge rst_n) beginif (!rst_n) begincnt <= 0;en  <= 0;end else beginif (cnt == CNT_MAX) begincnt <= 0;en  <= 1;    end else begincnt <= cnt + 1;en  <= 0;endend
end
endmodule

流水灯效果

关键字:福建省人民政府征兵办公室官网_高端网页设计人才_app营销策划方案_品牌推广和营销推广

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: