Xilinx 7A 开发流程——工程模式 ARTY XC7A35T

2021-03-02 16:50:33 浏览数 (4)

Xilinx 7A 开发流程——工程模式 ARTY XC7A35T

一、新建工程

1、 Create Project–Next

二、设计文件输入 Flow Navigator–Project Manager–add sources或Sources窗口的

Ok—Finish

双击flowing_light(flowing_light.v),右侧编辑窗口打开flowing_light.v,会自动生成一个module, 下一步编写代码

`timescale 1ns / 1ps //1个时间(时延)单位为1ns,精度为1ps. module flowing_light( input clk, input rst, output [3:0] led ); reg [23:0] cnt_reg; reg [3:0] light_reg;

代码语言:javascript复制
always @(posedge clk)
    begin
        if(rst)
            cnt_reg<=0;
        else
            cnt_reg<=cnt_reg 1;
    end
always @(posedge clk)
    begin
        if(rst)
            light_reg<=4'b0001;
        else if(cnt_reg==24'hffffff)
            begin
                if(light_reg==4'b1000)
                    light_reg<=4'b0001;
                else
                    light_reg<=light_reg<<1;
            end
     end
 assign led = light_reg;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

endmodule 三、RTL详细描述和分析 详细描述(Elaboration)是指将RTL优化到FPGA技术,Vivado集成开发环境允许实现下面的功能。 1)、设计者导入和管理RTL源文件,包括Verilog、System Verilog、VHDL、NGC(The ISE Netlist format),或者测试平台文件。 2)、通过RTL编辑器创建和修改源文件。 3)、源文件试图。 a) 层次:以层次化的形式显示设计中的模块 b) 库:以目录的形式显示源文件 在基于RTL的设计中,详细描述是第一步。当打开一个详细描述的RTL设计时,Vivado集成环境编译RTL源文件,并且加载RTL网表,用于交互式分析。设计者可以查看RTL结构、语法和逻辑定义。分析和报告能力包括:  RTL编译的有效性检查和语法检查  网表和原理图研究  设计规则检查  使用一个RTL端口列表的早期I/O引脚规划  可以在一个视图中选择一个对象,然后在其他视图中交叉检测包含在RTL内定义的实例和逻辑定义 RTL详细描述的实现 ① 在“Sources”窗口下,选择flowing_light.v文件 ② 展开Vivado左侧的“Flow Navigator”(流程管理)窗口中的“RTL ANALYSIS”选项 ③ 在展开的选项中单击“Open Elaborated Design”,vivado 开始运行“Elaborated Design”过程,该过程提供了下面选项  Report Methodology 运行设计方法学检查,以发现当前设计中的错误或问题  Report DRC 运行设计规则检查,并报告检查结果  Report Noise 基于XDC文件,在设计上检查SSD(同时开关输出)  Schematic 打开原理图 ④ 自动打开Pakeage界面,如图所示

四、添加约束文件 添加约束文件,有两种方法可以添加约束文件,一是利用vivado中IO planning功能,二是可以直接新建XDC的约束文件,手动输入约束命令。 a、 利用IO planning 第三步完成后,vivado右上角的下拉框中自动为I/O Planning 或在主菜单中选择Layout–I/O planning,在窗口下面出现I/O Ports 根据原理图的添加管脚、电压信息

led[0]: LED4—IO_L24N_T3_35(H5) led[1]: LED5—IO_25_35(J5) led[2]: LED6—IO_L24P_T3_A01_D17_14(T9) led[3]: LED7—IO_L24N_T3_A00_D16_14(R10) clk : E3 rst:BTN0 D9 电压为3.3V

代码语言:javascript复制
    Scalar ports (标量端口),位宽为1
  • 1

器件属性对于生成比特流,以及后续的FPGA配置过程都有影响。 设置BANK的预设电压:Tools—Edit Device Properties

Configuration 设置如下

点击保存按钮,弹出以下对话框,我们要Create a new file,输入File name --OK

此时,在Sources 下Constraints 中会找到新建的xdc文件

xdc语句已经加载到xdc文件中

b、 利用第二种方法添加约束文件 点击Add Sources,选择第一项 Add or Create Constraints,点击Next 点击Create File,新建一个XDC文件,输入xdc文件名,点击OKFinish 双击打开建好的xdc文件,并按照相应规则,输入相应的FPGA管脚约束信息和电平标准 五、利用vivado进行功能仿真 1、 创建激励测试文件,在Simulation Sources中右键选择Add Source,选择add or create simulation sources

点击Create File 创建一个仿真激励文件

确认添加完之后点击finish,因为是激励文件不需要对外端口,所以port 部分直接空着,点击OK

在Sources下的Simulation Sources下的sim_1下 双击test(test.v),完成对将要仿真的module的实例化和激励代码的编写 `timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2021/01/07 17:42:20 // Design Name: // Module Name: test // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // //

module test();

reg clk; reg rst; wire[3:0] led; flowing_light u0( .clk(clk), .rst(rst), .led(led) );

parameter PERIOD = 10;

always begin clk = 1’b0; #(PERIOD/2) clk=1’b1; #(PERIOD/2); end

initial begin clk = 1’b0; rst = 1’b0; #100; rst = 1’b1; #100; rst = 1’b0; end endmodule 保存,此时进入仿真,在左侧的Flow Navigator 中点击Simulation 下的Run Simulation 选项,并选择Run Behavioral Simulation(行为仿真) 一项,进入仿真界面。

六、设计综合和分析 综合是将RTL级的设计描述转换成门级的描述。在该过程中将进行逻辑优化,并且映射到Xilinx 器件原语(也称为技术映射) Vivado集成环境综合是基于时间驱动的,专门为存储器的利用率和性能进行了优化。  在综合过程中,使用XDC约束驱动综合优化,因此必须存在XDC文件(第四步已经初步生成/建立XDC文件)  时序约束考虑,首先进行综合设计,但没有用于约束编辑器的时序约束;综合时,可以使用约束向导初步定义时序约束。  综合设置提供了对额外选项的访问  当打开被综合的设计后,注意设计流程管理器的变化。通过设置调试点,这样允许将调试特性集成在vivado环境中。 设计综合选项 在Flow Navigator 窗口下,选中SYNTHESIS,单击鼠标右键,下拉菜单中执行Synthesis Settings,弹出综合属性设置对话框

通过“Default constraint set”下拉框,可以选择用于综合的多个不同的设计约束集合。一个约束集合又是多个文件的集合,它包含XDC文件中用于该设计的约束条件。有两种类型的设计约束,物理约束和时序约束。 物理约束:定义了引脚的位置和内部单元的绝对或相对位置。内部单元包括块RAM、LUT、触发器和器件配置设置。 时序约束:定义了设计要求的频率。如果没有时序约束,viviado只对布线长度和布局阻塞进行优化。 通过“Options”区域“Strategy”(策略)的下拉框,可以选择用于运行综合的预定义综合策略。设计者可以定义自己的策略。 执行设计综合 Flow Navigator—SYNTHESIS—Run Synthesis 完成综合后打开综合设计Open Synthesized Design

展开左侧Open Synthesized Design选项 ① Constraints Wizard ② Edit Timing Constraints ③ Set up Debug ④ Report Timing Summary ⑤ Report Clock Networks ⑥ Report Clock Interaction ⑦ Report Methodology ⑧ Report DRC ⑨ Report Noise ⑩ Report Utilization(利用率) ⑪ Report Power ⑫ Schematic 打开原理图

IBUF 输入缓冲器 OBUF 输出缓冲器 LUT 查找表 FDRE D触发器 D flip flop with clock enable and synchronous reset CARRY4 进位逻辑链

七、添加时序约束 在综合完成后选择Open Synthesis Design,或者从Flow Navigator 中选择Open Synthesis Design

选择Open Synthesized Design–Edit Timing Constraints

打开时序约束界面开始进行时序约束 双击Clock–Create Clock(0)

编辑一个Clock name 然后点击Source objects 的索引图标

点击Find按钮,把clk从左侧框移至右侧,点击set

时钟输入是100MHz, T=10ns,窗口中的数据是一个周期。在0ns时上升沿,在5ns处下降沿。则clk是以50%为占空比的100MHz的频率。将Command 中create_clock -period 10.000 -waveform {0.000 5.000} [get_ports clk]复制,OK后将复制的command,添加到XDC文件末尾。Ctrl S保存

设置Input Delay 双击InputSet Input Delay

Clock选择clk_pin,Objects 选择rst,Delay选择0ns –>OK

再次双击InputSet Input Delay

OK 同样设置Output Delay

先点击Apply 然后fileConstraintsSave 这时,打开Sources 界面可以看到约束已经写入XDC文件了

点击Reload

在FlowNavigator 中选择SYNTHSISOpen Synthesized DesignReport Timing Summary,并将Option 标签里Path delay type 设置成min_max

在完成时序报告后,大家可以在报告中看到Hold 下的地方显示红色,即时序约束后,需求没有满足。然后在进行Implementation的时候,vivado会自动优化布线路径,来满足用户设定的约束时间。如果在Implementation中还是显示无法满足,则需要分析电路进行进一步约束。 八、设计实现与分析 Vivado 集成开发环境的实现处理过程包括对设计的逻辑和物理转换。 Vivado 工具实现流程,Tcl命令 link_design 对设计进行翻译,应用约束文件 opt_design 对逻辑进行优化,使其容易适配到目标Xilinx 器件 power_opt_design 对设计元素进行优化,以降低目标Xilinx器件的功耗要求 place_design 在目标Xilinx器件上对设计进行布局 phys_opt_design 对高扇出网络驱动器进行复制,对其负载进行分散,即降低高扇区负载量,以优化设计时序 route_design 在目标Xilinx器件上对设计进行布线 report_timing_summary 分析时序,并生成时序分析报告‘ write_bitstream 生成比特流文件 设置实现选项 Flow Navigator—IMPLEMENTATION 右键选则Implementation Settings…

各优化策略功能描述 vivado Implementation Default 平衡运行时间,努力实现时序收敛 Performance_Explore 使用多个算法进行优化、布局和布线,为了得到潜在的较好的优化结果 。。。 各选项Options 功能描述 Design Initialization(init_design) Opt Design(opt_design) 用户控制逻辑优化过程 Power Opt Design(power_opt_design) 控制功耗优化过程 。。。 设计实现和分析 Flow navigator—IMPLEMENTATION—Run Implementation 设计实现完成后弹出Implementation Completed 对话框,选中打开实现后的设计

在右侧窗口中出现Device窗口显示器件的结构图。 可以显示布线资源,绿色线显示,放大查看

在Open Implemented Designed 下拉菜单中有一些报告文件,在窗口下面也有一个Reports窗口,里面也有一些报告。可供查看。 静态时序分析 九、设计时序仿真 时序仿真和行为级仿真最大的不同点在于时序仿真有标准的延迟格式(Standard Delay Format,SDF)的信息,而行为级仿真不带有时序信息,毛刺和竞争冒险等时序问题都会表现在设计时序仿真中。 在Sources窗口中选中test.v 文件 Flow Navigator—SIMULATION—Run Simulation 在Simulation 菜单中选则Run Post-Implementation Timing Simulation(运行实现后的时序仿真)

十、生成编程文件 在Flow Navigator 中点击 Program and Debug下的Generate Bitstream 选项

Open Target Program Device

十一、写入配置flash

右键xc7a35t_0(1),选择Add Configuration Memory Device

选择电路板上的flash,上一步已经生成 了要用的bin文件

总结,Xilinx 7A 开发流程 新建工程 设计源文件输入verilog HDL、VHDL。。。 RTL详细描述和分析 XDC约束—IO规划 行为仿真 综合 时序约束 实现 时序仿真 编程和调试 外部memory 下载程序

1 人点赞