ZedBoard学习手记(二) 开发自定义AXI总线外设IP核.doc

ZedBoard学习手记(二) 开发自定义AXI总线外设IP核.doc

ID:27531324

大小:695.50 KB

页数:16页

时间:2018-12-04

ZedBoard学习手记(二) 开发自定义AXI总线外设IP核.doc_第1页
ZedBoard学习手记(二) 开发自定义AXI总线外设IP核.doc_第2页
ZedBoard学习手记(二) 开发自定义AXI总线外设IP核.doc_第3页
ZedBoard学习手记(二) 开发自定义AXI总线外设IP核.doc_第4页
ZedBoard学习手记(二) 开发自定义AXI总线外设IP核.doc_第5页
资源描述:

《ZedBoard学习手记(二) 开发自定义AXI总线外设IP核.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、ZedBoard学习手记(二)开发自定义AXI总线外设IP核  想要发挥ZYNQ芯片的特长,让整个系统协同工作起来,就需要将PS与PL两部分结合在一起,在Cortex-A9核和FPGA逻辑资源之间建立通信的通道,这条通道就是AXI总线。ZedBoard推出的官方例子中已经介绍了如何将Xilinx做好的AXI总线IP(如AXI_TImer、AXI_GPIO等)添加到工程中,而下面就让我们一起来自己编写一个简单的AXI总线设备——读取板上的8个SwTIch状态,并控制8个LED的开关。有人会问我不了解AXI总线啊怎么办,无须担心,Xilinx已经为我们设计了

2、建立向导,可以自动生成一个设备模板,即使不了解AXI协议,也可以轻松完成设计工作。首先通过PlanAhead建立一个系统工程,导入ZedBoard的xml文件:zedboard_RevC_v2.xml。这步操作还不清楚的童鞋请在ZedBoard官网上下载ZedBoard_CTT_v14.1资料并跟随该文档进行扫盲。这个资料很详细,也是StepByStep的,可以帮助完成基本的操作学习。工程建好后,进入XPS界面,选择Hardware→CreateorImportPeripheral,开始创建外设。(看不清图的话可以点击小图放大,下同)  在弹出的窗口中选

3、择新建模板,建立一个外设。  Next后选择集成到XPS系统中,这样新建的外设就会保存在edk目录下的pcores文件夹中。  接着Next,为自己的IP起个名字,这里叫my_gpio,全称就是my_gpio_v1_00_a了,注意这里的名字不能用大写字母。  之后选择总线的类型,可以看出这里提供了几个AXI总线设备的变种形势,可以使设备具备猝发操作及大量数据传输的能力,这里我们选AXI4-Lite形式,也就是最简单的类型。  下一步进行几个可选项配置,包括软件复位、主从模式等,勾选中间两项即可,虽然现在用不到软件复位。  设置寄存器数量,这里我们设置两

4、个32位寄存器(实际使用低8位,其它部分NotCare),一个用来控制LED,另一个用来读取SW状态。  选择需要的IP连接信号,这些是与用户逻辑对接的信号,保持默认即可。  这一步可以建立一个总线上的仿真设备,不需要,直接Next。  来到另一个配置画面,第一个选项是使用Verilog来设计用户逻辑;第二个选项建立一个ISE的工程文件,方面写代码;第三个选项让XPS自动生成底层的控制代码。  设置结束以后,在XPS的工程目录下就能找到IP的文件夹了,兔子这里的路径是”.Hello_Zed.srcssources_1edkmodule_1pco

5、resmy_gpio_v1_00_a”。里面有三个文件夹,hdl文件夹包含了user_logic.v和my_gpio.vhd。前者就是我们要修改的用户逻辑文件,后者则是用来连接AXI与用户逻辑,并封装IP核的VHDL文件。这个文件只能是VHDL的,所以像兔子这样只会Verilog的就很苦闷了,还好里面的内容很简单,看一下就能明白。在devlprojnav文件夹下可以找到刚生成的ISE工程,用ProjectNavigator打开my_gpio.xise,这样就可以开始编辑user_logic了。  user_logic中除了一些定义和信号连接以外,就是

6、两个always块,第一个实现AXI总线向用户寄存器写入数据,第二个则是总线从寄存器中读取数据。需要注意的是,这里的AXI总线已经通过Xilinx的AXILiteIPInterface进行了中转,到用户这里就变成了非常简单的读写逻辑。为了控制板上的硬件,我们定义两组信号和相应的寄存器:SW_In信号连接8个Switch,LED_Out连接8个LED。input[7:0]SW_In;output[7:0]LED_Out;在这里,规定寄存器0为SwTIch状态寄存器,寄存器1为LED控制寄存器。添加一个always块,使写入寄存器1的数据在LED_Out上更

7、新。always@(posedgeBus2IP_Clk)beginif(Bus2IP_Resetn==1’b0)beginLED_Out具体的代码内容在此:my_gpio_hdl.rar双击Synthesize,检查一下有没有问题,没问题的话就可以关掉ProjectNavigatorl。  回到XPS界面,我们的自定义IP已经在列表中了,但是这个时候将IP添加到工程中,刚才进行的编辑并不生效,GPIO端口并没有显示在IP核的框图中,这点兔子没有搞明白是为什么,可能要手动修改MPD文件吧。于是我选择将这个IP再添加一次(不得已而为之,有什么好办法望不吝赐教

8、),还是刚才的方法,只不过这回选择导入已有的外设,这种方法也可以用于导入其他已有

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。