FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
登录
首页-所有问题-软件使用-正文

Vivado的使用流程,有没有推荐?

二牛学FPGA二牛学FPGA
软件使用
1天前
0
0
25

Vivado的使用流程,有没有推荐?

Vivado的使用流程,有没有推荐? - 第1张
二牛学FPGA

二牛学FPGA

初级工程师
这家伙真懒,几个字都不愿写!
源自: -02 | 入门基础:FPGA架构基础
84652.16W3.27W
分享:
余老师可以分享代码吗?
余老师可以分享代码吗?上一篇
回答列表总数:2
  • 二牛学FPGA

    二牛学FPGA

    提问者
    初级工程师

    数字电路实验使用的是 Vivado 开发环境 2019.2 版本。Vivado 开发环境非常庞大,实验只需要安装最基础的 WebPack 免费版本即可。免费版本包含了生成实验板所需要的比特流 bit 文件的生成工具。

    需要注意的是 Vivado 不支持中文目录,务必不要安装到中文目录下使用,也不要将 Vivado 的项目放到中文目录下面,否则会综合不过。

    创建项目

    注意:这里创建项目的流程是给同学们演示一个 Vivado 项目的各个环节,以实验4的项目为例,包括创建项目,编写代码,综合,实现等的过程,理解整个流程可以帮助理解硬件设计的过程。

    首次进入 Vivado 的界面:

    创建新的一个项目:

    输入项目名称:

    选择项目的性质:

    选择芯片型号 xc7a35tfgg484-2,这个型号就是可编程模块上的 FPGA 芯片型号:

    项目情况简介:

    创建完成空白的项目:

    编写代码

    File 菜单栏种选择 Add Sources...

    进入添加源文件对话框:

    创建新的文件:

    输入 decoder 为创建文件的名称,注意文件类型选择为 SystemVerilog:

    创建完文件,点击 finish:

    设置输入输出:

    添加完成,并且可以查看源代码:

    在源代码部分输入以下源代码:

    module decoder (
        input wire [3:0] sw,    //拨动开关输入
        output reg [6:0] seg    //七段数码管输出
        );
    
        always_comb begin
            case (sw)
                4'd0: seg = 7'b1111110;
                // ... 补全其他情况 (4'd1~4'd9)
                default: seg = 7'b0; // 默认 4'dA~4'dF 都显示为全灭
            endcase
        end
    endmodule
    

    输入代码之后的情况:

    上述的代码就是一个七段数码管的译码器,只译码了输入为 0 的情况,其他代码还需要补充。

    代码综合

    写完代码之后,将经过综合,实现,生成比特流的过程,最终生成可以加载到 FPGA 上面能用的比特流文件。下面是各个流程的含义。

    综合 (synthesis):Verilog 语言翻译为门电路的表示,使用 LUT,FF(flip-flop,寄存器)方式来完成门电路的构成等。

    实现 (implementation):考虑连线,各个元器件的放置,连线优化等。

    生成 bitstream:生成最终的可以使用的比特流文件,可以被加载到 FPGA 上使用。

    下面是代码经过综合和实现和生成比特流的各个过程。实际工作中,可以直接点击 Generate Bitstream 选项来直接生成比特流。Vivado 软件会自动调用上面的三个过程。

    选择综合选项:

    开始综合:

    综合进行中:

    综合完成:

    点击 ok 继续完成实现:

    实现完成:

    Open Implemented Design 打开实现设计,用于进行添加约束等操作。

    Generate Bitstream 生成用于下载到 FPGA 的比特流文件,没有添加约束的情况下直接生成比特流文件可能会报错,因此需要先添加约束。

    View Report 查看综合报告。

    Note 如果直接选择Generate Bitstream ,在生成比特流的时候,Vivado 会报告类似下面的错误:  
    [DRC UCIO-1] Unconstrained Logical Port: 11 out of 11 logical ports have no user assigned specific location constraint (LOC). 
    ...Problem ports: seg[6:0], and sw[3:0].
    
    这是因为目前项目中缺少约束文件,下面介绍如何添加约束,那时就可以成功地生成比特流文件。

    添加约束

    约束是指定 Vivado 软件一些行为的 Tcl 语言语句,在本实验的范围内,主要用到的就是 IO 约束,即将已经完成的顶层模块中的信号,与 FPGA 芯片实际的输入输出管脚对应起来,这样生成的最后的比特流文件才能够在板子上真正执行。

    通过Open Implemented Design 中的 Constraint Wizard 来定义约束,点击 Define Target 按钮:

    创建约束文件:

    选择 Create File 新建文件:

    选择新文件为设计的约束文件:

    编辑 clock.xdc 文件:

    使用可编程模块上的接插孔连接开关和七段数码管,其中 IO1 ~ IO4 作为输入 sw[3:0],连接到开关模块;IO14 ~ IO20 作为输出 seg[6:0],分别连接七段数码管的a ~ f。将具体的约束写入到 decoder.xdc 中:

    # sw input
    set_property -dict {PACKAGE_PIN M21 IOSTANDARD LVCMOS33} [get_ports sw[3]];
    set_property -dict {PACKAGE_PIN N20 IOSTANDARD LVCMOS33} [get_ports sw[2]];
    set_property -dict {PACKAGE_PIN N22 IOSTANDARD LVCMOS33} [get_ports sw[1]];
    set_property -dict {PACKAGE_PIN P21 IOSTANDARD LVCMOS33} [get_ports sw[0]];
    
    # seg output
    set_property -dict {PACKAGE_PIN Y21 IOSTANDARD LVCMOS33} [get_ports seg[6]];
    set_property -dict {PACKAGE_PIN AB22 IOSTANDARD LVCMOS33} [get_ports seg[5]];
    set_property -dict {PACKAGE_PIN AA18 IOSTANDARD LVCMOS33} [get_ports seg[4]];
    set_property -dict {PACKAGE_PIN AB18 IOSTANDARD LVCMOS33} [get_ports seg[3]];
    set_property -dict {PACKAGE_PIN AA20 IOSTANDARD LVCMOS33} [get_ports seg[2]];
    set_property -dict {PACKAGE_PIN AB21 IOSTANDARD LVCMOS33} [get_ports seg[1]];
    set_property -dict {PACKAGE_PIN AA21 IOSTANDARD LVCMOS33} [get_ports seg[0]];
    
    set_property CFGBVS VCCO [current_design]
    set_property CONFIG_VOLTAGE 3.3 [current_design]
    

    其中 set_property PACKAGE_PIN 命令表示设置管脚约束,这类约束是与电路板连线相关的。可编程模块上有各种电路连接到 FPGA 不同的管脚上,进行实验的时候需要选择不同的信号与 FPGA 哪些管脚进行绑定。

    完整的管脚绑定关系可以参考可编程模块部分。

    最后两条命令 set_property CFGBVSset_property CONFIG_VOLTAGE 设置了 FPGA 配置电路的供电方式,它们由电路板硬件设计得出,在各个实验中不需要更改。

    运行实现并生成比特流 bit 文件

    重新运行实现(Run Implementatuion)后,选择生成比特流(bitstream)文件:

    成功生成 bit 文件,为最终可以装载到 FPGA 中的文件:

    在 Vivado 的右上角可以看到当前 Vivado 后台综合,实现,生成 bitstream 的进度情况。

    配置 FPGA

    有了比特流文件之后就可以将文件装载到 FPGA 中,使其工作,这一过程也叫做配置。 成功生成 bit 文件后,选择 Open Hardware Manager,进入硬件管理界面:

    此时 Hardware 框中没有任何芯片信息,下面开始连接电路。

    首先把开关模块,可编程模块和带译码的七段数码管模块,进行电路连接:

    然后把下载器连接到可编程模块上,下载器通过 USB 连接到电脑上:

    接通实验模块电源:

    此时 Hardware 框中可以看到芯片信息,如果没有,请点击 Open Target,然后选择 Auto Connect

    Hardware 框中就可以看到芯片的信息 xc7a35t_0,此时芯片的状态为 Not programmed

    在芯片信息处右键单击:

    选择 Program Device... 选择装载的文件,一般默认就是本项目生成的位流文件,不用修改:

    选择 Program ,对芯片进行配置

    配置完成后,可以看到当输入开关为 0000 时,七段数码管显示 0,译码器工作正常。

    注意:每一个开发板都会把特定的 FPGA 管脚与特定的片外元器件相连接在一起,因此约束文件反映的是开发板的硬件实现情况。可编程模块的连接请参考可编程模块部分内容。
    18小时前
  • 未来

    未来

    初级工程师

    详细的操作流程吗?

    1天前
我要回答
回答被采纳奖励100个积分
FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
请先登录