二、使用自定义的 AXI-Lite的IP 找到开始时的新建工程,新建一个 Block Design 原理图设计文件,添加 IP 时就可以搜索到自定义的 LED_MyIP_Lite。 添加ZYNQ,使用自动连接会自动添加复位逻辑和 AXI总线互联结构,添加一个 ILA 集成逻辑分析仪,并设置成 AXI4 LITE 接口,引出 LED 输出,原理图文件右键生成顶层 wrapper。
选择匹配的AXI4_lite接口名称,我这已经选过了。 之后一直Next直到finish,把原来的S00_AXI接口的地址删除,就得到下图警告也没了: 最后的步骤就是封装IP核,点击左边最后一项Review and Package,点击PackageIP则完成此次操作。 方法二: 工程上先把需要封装的代码添加完成,然后点击封装IP 选择红框的封装当前代码 此时IP...
选择编辑IP,打开的工程由顶层Wrapper和AXI-Lite总线接口逻辑组成。关闭自动弹出的IP封装向导,当添加好用户自定义逻辑后再重新封装,否则封装的仅仅是软件生成的接口逻辑。接口比较多,分为写通道和通道,而每个通道基本逻辑又由地址通道和数据通道组成。除了以上四个通道外,写通道包含应答通道以返回CPU确认信息。每个接口以S...
通过图4‑49知道,IP的顶层接口分成两部分,一个是AXI_Lite接口,这部分上面两节有介绍,一个是GPIO接口,所以需要在顶层文件中增加这一接口。 代码4‑7 自定义IP顶层接口定义 1. module GPIO_LITE_ML # 2.( 3. // Users to add parameters here 4. 5. // User parameters ends 6. // Do not modif...
xilinx的时钟ip提供了两种动态配置方式,一种是DRP的接口,这种在GT serdes的模块中很常见,修改一系列底层寄存器,从而实现配置;另一种是axilite的接口,这种接口属于标准axi4协议,好处是可以与内部总线互联,然后开辟一段寄存器空间,开放给软件,由软件来修改内部寄存器,从而实现频率的动态修改。
选择匹配的AXI4_lite接口名称,我这已经选过了。 之后一直Next直到finish,把原来的S00_AXI接口的地址删除,就得到下图警告也没了: Package 方法二: 工程上先把需要封装的代码添加完成,然后点击封装IP 选择红框的封装当前代码 此时IP核编辑的页面跳出来了,跟方法一类似: ...
这里讲一个小问题,不知道大家在使用自定义的AXI4-LITE IP时有没有遇到。 比如,我现在制定了一个PWM IP,如果有看我microblaze系列教程的同学应该知道,当时我只设计了:如何控制PWM IP的输入,也就是通过将寄存器和pwm的duty和period参数进行了关联配置。
Interface Type(接口类型)-->Lite; Data Width(Bits)(数据位宽)-->32位; Number of Registers(寄存器数量)-->4 ;单击next。6:选择Edit IP,点击Finish按钮。软件自动打开一个编辑IP的工程,即edit_GPIO_LITE_ML_V1_0.xpr工程。3.2修改IP源码 1:打开的edit_GPIO_LITE_ML_V1_0.xpr工程界面如下。查看...
user_logic中除了一些定义和信号连接以外,就是两个always块,第一个实现AXI总线向用户寄存器写入数据,第二个则是总线从寄存器中读取数据。需要注意的是,这里的AXI总线已经通过Xilinx的AXI Lite IP Interface进行了中转,到用户这里就变成了非常简单的读写逻辑。
依旧起名为my_gpio,在弹出的提示中选Yes覆盖,之后一路Next到HDL Source Files窗口,选择IP核的\data\_my_gpio_xst.prj文件。 继续Next,直到这里选择总线类型为AXI4-Lite Slave类型。 接着在参数窗口中指定High Address的参数为C_HIGHADDR。 好了,Next到结束,这时刚才进行的修改已经生效并被成功导入了,现在双击my...