Vivado将.v文件作为模块加入Block Design

  用Vivado开发ZYNQ时,常用到Block Design。Block Design中不仅仅可以添加IP核,还可以将未封装成IP的.v或.vhd文件作为模块加入其中。我们以往Block Design中加一个闪灯的模块为例,说明如何向Block Design添加.v文件模块。
1、启动Vivado,创建一个工程,并创建一个Block Design和一个led.v文件。下面贴出led.v和约束文件的代码。

//led.v
`timescale 1ns / 1ps 
module led 
#(
    parameter FREQ = 32'd49_999_999//这个参数可以在Block Design中修改
)
(
    input sys_clk,
    output reg [1:0] led
    );
reg[31:0] timer_cnt;
always@(posedge sys_clk)
begin
    if(timer_cnt >= FREQ)
    begin
        led <= ~led;
        timer_cnt <= 32'd0;
    end
    else
    begin
        led <= led;
        timer_cnt <= timer_cnt + 32'd1;
    end
    
end
endmodule
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]
set_property PACKAGE_PIN G14 [get_ports {led[1]}]
set_property PACKAGE_PIN M15 [get_ports {led[0]}]
set_property PACKAGE_PIN K17 [get_ports sys_clk]
create_clock -period 20.000 -name sys_clk -waveform {0.000 10.000} [get_ports sys_clk]

led.v还没添加入Block Design,这两个模块是平级的,如下图所示。
Vivado将.v文件作为模块加入Block Design_第1张图片2、右键点击led.v,点击"Add Module to Block Design",将led.v作为模块加入到Block Design中。这时可以看到led.v和Block Design的层次关系。
Vivado将.v文件作为模块加入Block Design_第2张图片Vivado将.v文件作为模块加入Block Design_第3张图片3、引出led_0模块的sys_clk和led[1:0]的引脚,方法是右击引脚点击“Make External”。然后给引出的引脚改名字,和约束文件中的引脚名称相同。
Vivado将.v文件作为模块加入Block Design_第4张图片led.v的模块中有一个参数,这个参数的值可以双击led_0模块,然后修改,如下图所示。
Vivado将.v文件作为模块加入Block Design_第5张图片
4、执行Wrapper、Generate、分析、综合、实现、生成bitstream等操作。最后将bitstream下载进开发板看一下现象,两个灯以0.5Hz的频率闪烁。可以在Block Design中改一下FREQ参数的值,再看看LED闪烁的情况。
  我这里的例子比较简单,复杂点儿的工程,比如有一个PS模块,也是可以这样向Block Design添加.v文件的。这种不封装IP,直接添加.v文件作为模块的方法可以比较灵活的修改还没有调试好的模块,等到所有bug都解决后再将.v文件封装成IP核。

你可能感兴趣的:(FPGA,fpga,vivado)