原创 SOPC Builder下 如何自定义IP

2010-5-4 12:55 6041 13 14 分类: FPGA/CPLD

PDIUSBD12为例,介绍如何自定义IP,使用的软件版本为Quartus II 9.0<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


PDIUSBD12USB从设备,8位并行总线接口。如果要与NIOS CPU通讯,则必须通过Avalon总线来桥接,因此需要编写IP,来将Avalon总线与PDIUSBD12连接起来。


一、编写IP 文件


首先看看avalon信号类型


a8df7521-d678-469d-a88a-ba12c801e089.JPG


我们使用的是Avalon-MM slaveConduit End两种。Avalon-MM slave是与三态桥连接的,而Conduit End是输出至外部的,也就是与D12连接的。


    编写IP文件如下


    Pdiusbd12.v


module PDIUSBD12(    


           //Alvalon-MM Slave


           input           cpu_rd,


           input           cpu_wr,


           input           cpu_cs,


           input           cpu_addr,


           input [7:0]     cpu_wr_dat,


           output [7:0]    cpu_rd_dat,


           input [3:0]     cpu_be,


                    


                     //Conduit End        


                     //pdiusbd12 interface


                     output          d12_rd,


                     output          d12_wr,


                     output          d12_cs,


                     output          d12_addr,


                     inout [7:0]     d12_dat


);


 


 


/*****************************************/


assign     d12_rd = cpu_rd | cpu_be[0];


assign     d12_wr = cpu_wr | cpu_be[0];


assign     d12_cs = cpu_cs;


assign     d12_addr = cpu_addr;


assign     d12_dat = (!d12_cs && !d12_wr) ? cpu_wr_dat : 8'hzz;


assign     cpu_rd_dat = (!cpu_cs && !cpu_rd) ? d12_dat : 8'hzz;


 


endmodule


 


保存文件至F:\IPCore目录。


二、IP配制


    IP的配制需要在SOPC Builder下完成。


    首先需要新建一个元件


aa4294fd-53dd-410f-8dd7-69c7f930dd34.JPG


点击下一步,在HDL File下添加刚才新建的IP文件。


点击看大图


点击下一步,在signals下的interfacesignal type设置为正确的类型。


点击看大图


点击下一步,在interfaces下进行如下设置


(1)、修改avalon_slave_0avalon_slave


8e0d775a-bfaa-444d-9cd9-1b205f7e6b24.JPG


(2)、设置时序


b623f2ad-39a9-4ea4-9d9f-d3f3821cf0d3.JPG


下一步 Component Wizard


点击看大图


给它分一个组为myIP,其它信息可根据需要来填写。


点击finish。弹出如下对话框,提示在F:\IPCore写入了一个元件描述的文件PDIUSBD12_hw.tcl,这个文件保存了刚才配制的所有信息。


a0355b46-7de5-41ff-82ad-a4b7771a75dc.JPG


选择 yes,save。此时system cintents就出现了刚才新建的IP元件。


07f8211d-fe05-4a8d-ba07-30abe481f356.JPG


三、设置IP Search目录


    SOPC Builder启动时就会在当前目录和指定目录搜索IP信息,而我们的IP和配制文件是在F:\IPCore目录,因此需要在IP Search Path下设置目录为F:\IPCore


    点击Tools -> Options


4b55cd4a-0978-4841-8c58-78947b4e12a6.JPG


点击File -> Refresh System,看看myIP是不是还在。如果在,那就对了。


四、添加IP


   双击myIP下的PDIUSBD12便可将IP添加到系统中来,并更名为D12  generate后,将生成的bsf添加进quartus下:


点击看大图


红圈内就是与PDIUSBD12硬件接口的信号。


 

         本文PDFhttps://static.assets-stash.eet-china.com/album/old-resources/2010/5/4/ede9fc96-ab63-4d87-bacc-4270e34a7937.rar

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1690430 2012-8-4 17:25

大哥 我试着做了一个IP 但是添加进去后 发现readata这个信号不见了 然后报错:没有readata信号 求解
相关推荐阅读
用户1278632 2011-09-15 12:49
解决FPGA配置成功,但不能初始化运行的BUG
摘要:    遇到两次FPGA配置完成,却不能正常运行的问题,一次是ALTERA的A1C3,另一次是XILINX的XC3S700A。两次都是DONE信号的问题。问题虽不大,但却很折腾人,今天在这里作下...
用户1278632 2011-09-15 12:41
Code Edit的神器UltraEdit
摘要:      我不是一个专职的程序员,但经常会要写一些单片机底层的code和hdl code,起初用UE,是因为查找和批量修改很方便,而且不会额外的生成一些“垃圾”文件;现在用UE三年多了,一直都...
用户1278632 2010-12-29 09:29
ISE与EDK联合设计报错 ERROR:NgdBuild:604 logical block
做一个很简单的测试在ISE的SCH里调用EDK的symbol,EDK的功能也很简单,就是CPU通过串品打印一串字符首先,我建一个ISE工程再建一source  sch类型,并设置为顶层,取名为top....
用户1278632 2010-12-22 14:49
EDK12.2中 mch_emc IP的时序问题
mch_emc IP可以将PLB总线时序转为inter 8080时序 下面是我用chipscope抓到的波形Mem_DQ_O_In :  数据输入 Mem_OEN:      读信号  Mem_A: ...
用户1278632 2010-12-22 14:29
xilinx FPGA的配制与应用程序引导-范例
两个Xilinx FPGA应用程序引导的范例1、run_in_flash是直接在NOR FLASH里运行程序2、spi_flash_boot是将BIT和bootloader和APP全部固化到SPI F...
用户1278632 2010-12-19 13:48
EDK下sram IP的使用
EDK软件的memory and memory controller中有一个xps multi-channel external memory controller(sram/flash)的IP,用来...
EE直播间
更多
我要评论
1
13
关闭 站长推荐上一条 /3 下一条