精华内容
下载资源
问答
  • fir_block design.pdf

    2019-06-04 21:28:30
    PYNQ FIR滤波器硬件加速block design Acceleration of a FIR filter on the PYNQ-Z1
  • Vivado Block Design的几个使用技巧(live)1. 如何将Sub Block Design模块从一个Vivado工程Copy到另一个工程?1) 通过BD Rebuild TCL脚本来实现。2) 把Sub BD打包成IP 1. 如何将Sub Block Design模块从一个Vivado...

    1. 如何将Sub Block Design模块从一个Vivado工程Copy到另一个工程?

    1) 通过BD Rebuild TCL脚本来实现。

    将Hierarchical Block Design block导出为tcl脚本,然后在新工程中run tcl脚本重建BD。

    1. Run “write_bd_tcl -hier_blks [get_bd_cells hier_0] hier_0.tcl” (hier_0 is the name of hierarchical block)
    2. Open a BD in the new project and source hier_0.tcl
    3. run “create_hier_cell_hier_0 ./ new_hier” (command to recreate the hierarchical block can be found at the end of the tcl file)

    2) 把Sub BD打包成IP

    通过Vivado, Tools菜单下的"Create and Package New IP"工具将希望Copy-Paste的Sub BD模块打包正IP,然后在别的Vivado工程中使用。

    2. 待续

    展开全文
  • SoC第一讲——Vivado的Block Design 的使用

    万次阅读 多人点赞 2019-07-31 23:21:55
    SoC第一课——Vivado的Block Design 的使用 前言 近期刚接触SoC的学习,通过Xilinx的Vivado软件和ZYNQ系列的器件芯片学习SOC,特此在学习的过程中做些总结,以帮助自己能有收获。 一、ZYNQ的架构 二、I/O 的架构 三...

    SoC第一讲——Vivado的Block Design 的使用

    前言

    近期刚接触SoC的学习,通过Xilinx的Vivado软件和ZYNQ系列的器件芯片学习SOC,特此在学习的过程中做些总结,以帮助自己能有收获。

    一、ZYNQ的架构

    ZYNQ 可以读zinc,与锌的英文读音类似。ZYNQ由PL(Programmable Logic)PS(Processing System) 两个部分组成。
    在这里插入图片描述

    PL即为FPGA部分的资源。而PS集成了两颗Cortex-A9 双ARM集成的硬核。两者主要通过AXI总线协议来进行数据交互。上图黄色的就是PL部分,其他为PS部分。

    Cortex A9 ARM周围有很多固定的外设,例如QSPI,IIC,GPIO,等硬件控制器,都已集成在PS部分的ARM的端口,通过IO接口可以引到PS的IO PIN脚上。PL部分同样也有很多IO,与ARM的IO相比,FPGA(PL部分)的IO较为灵活,可以自定义,可扩展,而ARM的IO已经是固定死的,不能自定义。这就是ARM和FPGA结合在一起的显著优点。

    PS的外设(如QSPI,IIC,GPIO)和内部ARM内核通过AMBA总线(AMBA Switches)进行互联。同时AMBA可以和PL端进行通信,四个GP接口(两路主机、两路从机,主要传输慢速信号)。并且PL端可以通过AXI总线协议在AMBA总线上访问上边的memory的控制器,同时可以访问DDR的内存(如图的箭头所示)。

    PL与ARM的交互一般是通过DMA(直接内存访问,即从外设不通过CPU的处理直接访问内存)的方式来进行的。与之相对应的通道是HP0-3(0、1是一组,2、3是一组)。通过HP可以直接访问DDR。ACP的接口是FPGA直接连至ARM的cache,这样可以在直接访问内存DDR的同时,CPU会及时更新数据,同步cache中的数据。

    二、I/O 的架构

    I/O的架构如下图所示:
    在这里插入图片描述
    I/O是研发过程中比较重要的部分。ARM侧的I/O一共有54个MIO。还有EMIO,可以与FPGA测,包括GPIO等,总共64根线,并且是双向的端口。MIO的编号为0-53,EMIO的编号为54-117
    SPI,IIC,GPIO等外设都可以通过EMIO引入到FPGA一侧,即可以作为FPGA一侧的管脚的输入输出,来驱动ARM的工作(可以在ARM中写C程序进行驱动FPGA内的逻辑设计的电路)。
    具体的IO需要根据自己开发板的原理图查看了解进行设计。
    下面是一张更具详细的ZYNQ的原理架构,包括IO,AXI总线等。
    在这里插入图片描述

    三、BOOT的具体流程

    由于我们后续的设计需要固化到ZYNQ中,因此,需要对于boot上电的过程需要清楚了解。
    传统FPGA上电的流程:在FPGA中,有外部存储器的控制器,当上电的时候,会读这个控制器里的配置数据。
    当加入ARM PS这一部分时,有很多的方式。通用的方式是通过SD卡或者是Flash加载。下面是这种BOOT的方式。
    在这里插入图片描述
    在上述过程中,第stage 0,在MIO中有配置的管脚,可以配置芯片加载的模式。
    如是SD卡的加载模式,则上电时,会从SD卡中读取配置文件,配置文件中一般是FSBL(first boot load)第一启动项,可以让ARM跑起来,用于加载bit文件,或者加载第二boot文件。
    在此过程中,bit流文件并不是必须的(此时只是用到ARM的部分,只有PS部分工作)。
    然后就是load裸机的应用程序,通过FSBL加载,或者跑操作系统需要SSBL(Uboot),然后再去load OS。

    四、Block Design (BD)的工程的搭建

    BD的创建类似于视图的创建,即在视图中中可以拖动我们的BLOCK。
    在这里插入图片描述
    然后主要对ZYNQ进行配置,包括DDR,MIO,PS-PL 之间的外设。

    具体的配置连接需要根据自己开发板的原理图,这一点特别重要。

    我自己用的是米联客的MZ7020开发板,
    1)外设接口
    对于UART:
    在这里插入图片描述
    我的开发板是MIO48、49,所以选择UART1 MIO48、49。有的开发板是46、47,所以在使用前请查阅自己的开发板接口。对于其他的外设接口也是类似,查找自己的原理图接口。
    SD卡:选择MIO 40-45
    还有一点重点是bank电压的选择。如bank0(bank500)是3.3V;bank1 (bank501) 是1.8V。
    EMIO:分配两个管脚(在GPIO中设置)
    2)PS时钟的配置
    PS输入时钟为 33.33333MHz
    CPU PLL时钟为 666.66666MHz (对于7020最大可设置776MHz)
    PL Fbbric Clock 为100MHz。是ARM的IO的PLL生成一个时钟来给PL端使用,即给FPGA一侧充当时钟来使用,即使FPGA一侧不集成时钟,也能使用外设提供的时钟。

    3)DDR的配置
    可以不进行配置,即使用内部的256K的on chip memory,但只能写一些简单的程序,所以一般需要挂载DDR。
    根据自己板卡的类型选择DDR的型号。
    在这里插入图片描述
    上面包含了一路时钟复位、时钟输入、固定IO、挂载的DDR、EMIO(GPIO引入到FPGA一侧)
    对于EMIO需要说明的是GPIO有三个接口。GPIO_I是输入,GPIO_O是输出端口,GPIO_T表示三态门的buff用于控制门的开关,可以设置为输出或输入。
    这里我们使用简单的设计,讲GPIO作为FPGA逻辑的输入:
    GPIO[0] 可用于FPGA管脚的输出(如控制LED灯)
    GPIO[1] 可用于可以作为FPGA的一个输入信号,作为使能端标记信号(如作为计数器的使能端,控制计数器产生振荡信号,从而在驱动LED灯)

    需要自己编写verilog代码来进行逻辑设计。

    module gpio_led(
    input 	clk_i,				//from zynp clk io
    input 	rst_n_i,
    input 	[1:0] 		gpio_i, //from zynp gpio
    output 	[1:0]		led_o 	//connet to fpga led_pin
    	);
    
    reg [2:0] div_cnt_ctrl;	//avoid meta-state of goio_i[1]
    reg [26:0] div_cnt;  //clk_i count
    reg led_pulse;
    
    //connect fpga pin directly gpio_i[0]
    assign led_o[0] = gpio_i[0];
    assign led_o[1] = led_pulse;
    
    always @(posedge clk_i) begin
    	div_cnt_ctrl <= {div_cnt_ctrl[1:0],gpio_i[1]};		//打拍操作不用复位,移位寄存器的方式,gpio信号跨时钟域
    end
    
    //count
    always @(posedge clk_i) begin
     	if (! rst_n_i) begin
     		div_cnt <= 27'b0;
     	end
        else if (div_cnt_ctrl[2] == 1'b1)begin
            if (div_cnt[26] == 1'b1) begin
     	    	div_cnt <= 27'b0;
     	    end
      	    else begin
     	    	div_cnt <= div_cnt + 1'b1;
        	end
        end
        else begin
                div_cnt <= 27'b0;
        end
    end
    
    //led_pulse 
    always @(posedge clk_i)
    begin
            if (! rst_n_i)begin
                pulse_led <= 1'b0;
            end
            else if (div_cnt[26] == 1'b1) begin
                pulse_led <= ~ pulse_led;
            end
            else
                pulse_led <= pulse_led;
    end
    
    endmodule
    

    完成代码编写后,需要添加至vivado自定义的IP中,可以在tools>creat and package new IP添加刚才新建的 .v文件。会弹出一个新的窗口。

    随便提一下,可以加入在线逻辑分析仪 ILA,进行在线debug调试。具体参考我之前的写的博客:
    https://blog.csdn.net/vivid117/article/details/97549702
    最后生成的block 如下,然后需要对其生成一个顶层文件 create HDL wrapper
    在这里插入图片描述
    顶层文件如下:
    在这里插入图片描述
    然后对led的管脚进行电平约束及引脚绑定。
    最后对创建的工程进行综合、编译和产生bit文件。

    接着需要在SDK中进行软件:
    File>export>export hardware>include bitstream
    File>launch SDK

    在SDK中新建一个应用程序。如hello world 的程序。
    在这里插入图片描述
    具体过程可以参考另外一篇博客。

    五、软核、硬核的区别

    介绍一下zynq核和MB软核以及A家NIOSII核(Altera),三者区别和一些共性。

    共性:把一些通用的驱动或者一些简单的C语言的计算的代码,直接引入到FPGA开发环境中。

    区别:1,ZYNQ A9 双核硬核 性能、效率高
    2,MB 和NIOS都是软核,性能差别很大,而且占用FPGA逻辑资源,数据互联或数据访问效率比较低。

    六、一些问题

    1. 数字IC跨时钟域的处理办法
      跨时钟域主要带来的问题就是亚稳态的问题,具体关于亚稳态可以参考我写的博客:
      https://blog.csdn.net/vivid117/article/details/91175138
      主要原因:建立时间或者保持时间不够。
    2. 处理方法–同步器:
      单比特信号
      通过打两-三拍(对目标时钟域的时钟打拍),只能减小发生的概率。
      多比特信号
      1)时钟采样速率很慢(10M以下) 可以保持多个时钟周期时,也可以打两拍处理;
      或者对多比特信号进行格雷码编码(相邻两个数变化最少),编码之后进行打拍操作,如:
      000
      001
      011
      010
      110
      111
      101
      100
      2)既不同频又不同域使用fifo或者是异步双口ram进行数据的处理,涉及到RAM和FIFO的深度计算,位宽的转换。
    展开全文
  • Block Design AXI BRAM Error

    2019-06-03 20:24:17
    Block Design 中添加AXI BRAM ,如图: 点击validate design 后,提示如下报错: ERROR: [axi_bram_cntlr-1] Port-A interface property <CONFIG.READ_WRITE_MODE> is not defined. ERROR: [Common 17...

    1、现象:

    在Block Design 中添加AXI BRAM ,如图:

    点击validate design 后,提示如下报错:

    ERROR: [axi_bram_cntlr-1] Port-A interface property <CONFIG.READ_WRITE_MODE> is not defined.
    ERROR: [Common 17-39] 'send_msg_id' failed due to earlier errors.
    ERROR: [BD 41-1273] Error running post_propagate TCL procedure: ERROR: [Common 17-39] 'send_msg_id' failed due to earlier errors.
        ::xilinx.com_ip_axi_bram_ctrl_4.0::post_propagate Line 79

     

    2、解决方法:

    展开全文
  • 使用Vivado的Block Design详细步骤

    千次阅读 2020-08-28 09:49:12
    1.选择创建Block Design并命名 2.点击Add IP,并选择ZYNQ7 3.双击 ZYNQ Processing System,打开 ZYNQ 系统的配置界面 1)PS_PL 页面提供了 PS 到 PL 的相关接口配置信息以及 PS 部分一些配置信息; 2)Peripheral I/O...

    1.选择创建Block Design并命名
    在这里插入图片描述
    2.点击Add IP,并选择ZYNQ7
    在这里插入图片描述
    3.双击 ZYNQ Processing System,打开 ZYNQ 系统的配置界面
    1)PS_PL 页面提供了 PS 到 PL 的相关接口配置信息以及 PS 部分一些配置信息;
    2)Peripheral I/O Pins 页面主要是对一些通用外设接口的配置;
    3)MIO Configruation 页面主要是对 MIO 已经EMIO 的分配控制;
    4)Clock Configruation 页面主要是对 PS 端时钟资源的配置和管理;
    5)DDR Configration 页面主要是对 DDR控制器一些参数的配置;
    6)Interrupts 页面主要是对中断进行配置管理
    在这里插入图片描述
    4.点击 PS-PL Configuration ,在 Gemeral 目录下,选择UART1 波特率是115200,并取消不用的AXI GP0接口
    在这里插入图片描述
    5.点击 Peripheral I/O Pins ,会出现以下的 IO 配置界面。(这里为了将程序下载到SD或Quad SPI Flash,并通过串口显示bootloader信息,故选择SD、 Quad SPI Flash、UART。)
    在这里插入图片描述
    6.在 MIO Configuration 项,Bank1电压选择1.8V,把 Quad SPI Flash 的 MIO1~MIO6 Speed 配置成 fast 模式,在SD0引脚MIO40~MIO45 Speed 也配置成 fast 模式,CD选择MIO47在这里插入图片描述
    在这里插入图片描述

    7.点击 Clock Configuration ,选择 ZYNQ 系统的一些时钟,CPU工作时钟是 666.666666Mhz(767Mhz), DDR 的工作时钟是533.333333Mhz,还有些是外设的工作时钟。QSPI 的时钟频率,默认是 200Mhz,这里不做修改。FCLK_CLK0这里设置为50Mhz,SDIO时钟100Mhz
    在这里插入图片描述
    8. 点击DDR Configration,在这个界面上是选择 DDR 芯片的名称和一些参数。我们再 Memory Part 中需要选择跟开发板上 DDR3 型号一样的名称
    在这里插入图片描述
    9.完成后点击OK.再在 Diagram 界面里点击"Run Block Automation"完成对 ZYNQ7 Processing System IP核的配置,生成外部 ZYNQ 系统的外部链接 IO 管脚。再右键点击Validate Design,进行验证设计
    在这里插入图片描述
    10.在 Source 窗口中选中 sys.bd,右键并先后选择Generate Output Projects 和 Create HDL Wrapper 进行操作
    在这里插入图片描述
    11.在sys_wrapper中例化led模块,并添加约束文件。再综合、实现、生成bit文件
    12.将硬件信息导出,File->Export->Export HardWare,同时添加bitstram文件
    在这里插入图片描述
    13.启动SDK,File->Launch SDK,生成sys_wrapper_hw_platform_0在这里插入图片描述

    展开全文
  • 版型更改,block design 的ip出现红色锁定,report ip 提示需要“retarget”,但各种尝试包扩recustoms、右键ip “upgrade ip”都不行或者报错。 方法 report ip后,出现的IP Status 最下方有个“Upgrade Selected”...
  • 工程文件夹下删除.sdk文件夹 修改完block design后重新generate output products后导入SDK(不重新生成它也会提示你的) 必要时把sdk里src文件夹保存下来,然后直接复制进新工程
  • 进行block design是连线看起来很乱,不用手动整理,在图纸上右击点击regernate layout连线就会变得干净整洁
  • 以数字处理信号中的FIR滤波器为例完成block design并用在线逻辑分析仪观察输出。 (1)放置所需IP块。选择右侧block design,右键Add IP,选择产生三角波的DDS,乘法器Multilayer,滤波器FIR(配置滤波系数可用matlab...
  • 为了不每次都重新生成block design,避免重复劳动。 可以使用直接复制原始工程的design bd块或者使用tcl脚本生成bd。 流程 复制原始工程的bd文件夹。 (1)对于原工程生成好的bd文件夹位于如下,复制design_1...
  • VIVADO 10. Block Design调用模块IP

    千次阅读 2020-06-22 21:01:09
    在VIVADO中Block Design设计中调用v或者vhd文件作为模块,如果模块中调用了IP,那么编译时会报下面这个错: [filemgmt 56-328] Reference 'input_buffer' contains sub-design file 'e:/Vivado_PRJ_18.2/0604/0604....
  • 在vivado设计中,经常会遇到需要临时添加,如下图,右键——>add Sources——>add or create design sources——>...再右击block design空白处:add module选择即可。生成模块图如下: ...
  • 赛灵思推出过一起类似的视频教程http://www.elecfans.com/d/818638.html,不过版本已有些旧,并且部分步骤还可以再优化,所以在此针对Vivado 2017.4和Xilinx UltraScale+ VCU118开发板,进行了Block Design,本次...
  • 在使用vivado的官方aurora IP时,调用ip example参考可对自身设计提供一定帮助,但毕竟大部分设计是在block design下连线完成的,aurora的官方回环自测demo提供的帮助并不是特别直观,网上看来看去也没有比较直接的...
  • FPGA设计中使用原理框图输入方式,编写完一个模块后,选择该模块源文件点击鼠标右键会出现 Add Module to Block Design,如果没有出现这个选项,可能是模块中有语法错误,或者没有打开Diagram框图设计文件。...
  • Xilinx Vivado Block Design时与或非IP核

    千次阅读 2019-04-30 18:23:59
    在用vivado的block design设计方法设计时,可以用Utility vector logic IP核来产生与或非 逻辑
  • Vivado2015.4硬件中Block design信息导出,通过.tcl文件保存 1. 设计好Block design工程。生成顶层文件后。 2. 选择File → Export → ExportBlock design… → 弹出下面的对话框。在红色箭头处填入导出...
  • Quartus 的 .bdf 文件向下不兼容,所以,如果试图在低版本的 Qurtus 中打开高版本的 .bdf 文件,会出现 Error: Block Design File C:\Users\liang\Desktop\test\test.bdf has an unsupported version number 1.4 的...
  • Block design中Bram以及Axi Bram_contorller应用中关于存储深度的改动背景解决方式深度计算 背景 有一次在做项目的时候需要在microblaze的外面挂载Bram,在block中添加了Bram后,Bram的设置界面的深度是没有办法做...
  • Custom IP: First step: Create a block design -&gt;Tools -&gt; Create and Package New IP -&gt; Create new AXI4 Peripheral -&gt; set a name for your new IP.(This IP will be saved under ...
  • 包含快速建立hdmi_vdma工程的tcl,建立工程用得到的IP核,时序约束文件,输出显示文字的库函数,SDK源码,适用于PYNQ_Z2,建议尽量使用2019.1版本的vivado
  • Optseq will then generate a series of schedules that randomize the order of the ITI's and the stimuli in order to find the maximum design efficiency. (3)optimized design * 2 1 Tor ...
  • Block design中引出AXI接口给外部,检查设计告警如下: [BD 41-968] AXI interface port /axi_lite4 is not associated to any clock port. It may not work correctly. Please update ASSOCIATED_BUSIF ...
  • vivado输出block design 的tcl脚本文件

    千次阅读 2018-08-03 17:28:13
    在TCL控制台输入如下命令将BD导出为tcl脚本: write_bd_tcl E:/dp_tx_ex/bdtcl.tcl,红色框内是tcl脚本导出的路径。
  • 参考文档:UG896
  • 今天在搭建DMA平台时出现以下问题 经过一番定位发现,这个FIFO Independent clocks需要选择Yes,而不是默认的No
  • 所以问题就来了:如何在不写代码的情况下在block design设计中实现截取与合并的操作呢?   用到的IP (1)constant IP。 此IP可以输出可配置位宽的常数,电平可配置0或者1。 ​ (2)concat IP。 此...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,042
精华内容 14,416
关键字:

blockdesign