http://blog.sina.com.cn/fpga[订阅][手机订阅]
个人资料
公告
我的邮箱 sk2400@163.com 
我只在发博文时登录此blog,所以如有问题需要探讨,请直接邮箱联系我,必回复。
本blog中除注明“转载”或“ZZ”的文章均为本人原创
分类
    内容读取中…
评论
读取中...
访客
读取中...
好友
读取中...
博文

(以下是我在做IPCORE重构时遇到的问题,学识有限,可能有不对的地方)

最近在做自定义IPCore的重构,硬件平台XUPVIIP,软件环境9.1.02+EAPR+Planahead。

系统要求重构的IPCore有总线接口和BRAM接口,开始时想将IPcore挂在PLB总线上,但是发现PLB接口需要太多的总线宏,担心板子资源不够,就改在挂到OPB上。官方提供了OPB的总线宏socket,看了一下IPcore的地址是和Socket绑定,这个和我们系统要求不符,我们希望地址和自定义IPcore绑定,所以决定自己写opb的总线宏socket。我将opb接口的总线宏和BRAM接口的总线宏做到了一个IPCore中,名opb_bm。做的时候遇到一些状况,记录如下:

1、  自定义IPCore重构时,与系统连接的引脚状态在变化,可能会影响到系统其他部分的工作,所以由IPcore到系统的总线宏要有使能端,在IPCore重构时,将使能关掉,防止重构时混乱的信号影响系统。

2、  官方提供的有使能的总线宏,使能端在左侧,使能端要由系统控制,所以使能部分必须在静态

EDK简单使用流程(6)(2008-12-14 01:01)

这个连载八个月没写了,思路已经接不上了,刚把以前的五篇看了一遍,好像是应该写用户自定义IPCORE了。

EDK作为开发基于FPGA的嵌入式系统的开发环境,可以对嵌入式系统中芯片内的软硬件同时进行设计开发。软件部分的开发设计和其他嵌入式开发环境很相似。硬件部分的逻辑设计功能好像是其它嵌入式开发环境所没有的吧。这部分功能体现在对已有IPCORE的操作和用户自定义IPCORE的设计。对已有IPCORE的操作之前写过了,这儿就不再写了。下面主要介绍用户自定义IPCORE。

设计用户自定义IPCORE的目的是用硬件逻辑完成一些EDK中没有提供的逻辑功能。比如系统需要通过视频处理芯片采集一张拍摄到的图像数据,用软件做速度一定是不够的,EDK中也没有提供类似功能的IPCORE,这样就只能用用户自定义IPCORE的方式解决数据采集的问题。用户自定义IPCORE与外部的接口应该是与EDK中提供的IPCORE相同的,这样才能添加到EDK中。

用户自定义IPCORE比较简单的编写过程是:
1、用EDK的向导(菜单“Hardware”->“Create and import peripheral wizard”

上来冒个泡(2008-10-17 10:04)

这三个月什么也没做出来,所以什么新东西也没写。

EDK那个长篇我会坚持写下去

EDK简单使用流程(5)(2008-04-04 10:19)
这两天在看一本书《编码的奥秘》。从两个邻居小孩熄灯后用摩尔斯密码聊天,写到海豚的二进制、继电器、电报、触发器、存储器、总线、操作系统,最后写到图像化革命。这本书是写计算机软件、硬件的形成及发展的,但是语言通俗风趣,读来一点也不觉得枯燥。这个和EDK有点远,言归正传,今天想写写怎样通过PPC上跑的软件程序控制挂在总线上的IP Core。
如果需要对IPCore进行操作,必须为IPCore添加地址,这个地址对应IP Core内部的寄存器地址,当总线的地址线的值等于某个寄存器的地址时,该寄存器将之后总线数据线发送的数据接收。然后IP Core根据收到的数据进行工作。也就是说只要对IPCore的地址写数据就可以操作IPCore。EDK中对IPCore的操作提供了很多函数,这些函数是封装了一层一层又一层,其实最基本的函数就是 XIo_In32 XIo_In16 XIo_In8 XIo_Out32 XIo_Out16 XIo_Out8,这些在xio.c中可以看到函数原型。
EDK简单使用流程(4)(2008-03-30 20:43)
好久没写了......
今天写怎么向工程中添加EDK中提供的IPcore和MHS文件。
通过向导建工程后,System Assembly View1中是工程中硬件的配置,这些信息都可以在MHS文件中找到。工程中硬件配置用的是EDK提供的IP Core 或 如果板子提供lib也可能包含lib中的IPcore。工程建完后,如果还需要添加IP Core,可以在左边IP Catalog中找到需要的IP Core对其双击或右键Add IP。这只是把IP Core加入工程,还需对其进行总线连接(Bus Interface)、端口连接(Ports)、地址分配(Addresses)。对于不同的IPCore 这三项不是必须的,但是如果进行了总线连接地址就是必须分配的,因为通过总线对IP Core进行操作必须有地址。比如GPIO这三项都有;BRAM Controler有Bus、address没有ports;如果自己写个IPCore(自定义IP Core以后写,我打了好多伏笔啊~~~)不需要与总线通信就没BUs、Address有Ports。连接方法很简单,看看界面就会了,我在这就不写了。
添加IPCore后如果对其使用方式不了解,可以看右键菜单中的PDF和view api documentation(在System Assembly View1中右键才有)。或者直接到EDK安装目录下的hw\Xilin
关于双核通信(2008-03-27 10:26)
 本想把双核通信写的详细些,不过有些步骤感觉自己写不明白。xilinx的xapp996是介绍双核通信的,建议大家看看,比我写的好多了。xapp996有个2M多的说明文档和13M多的例子。上不了外网的网友可以联系我,我把例子发给你。我的邮箱 sk2400@163.com
 趁着blog有人气,为自己做个广告。想找个地方工作,或是读博。哪位看了我的blog,觉得我还行就联系我sk2400@163.com
 我是东北大学计算机研究生,今年7月毕业。做过的东西blog里写了一少部分,还有些“高深的”没写。软件善用C,我是计算机的吗,C就是我的母语,我的汉语还没C流利。硬件用VHDL,写了快3年了,写VHDL的潜规则知道些,对综合有一定的认识,对FPGA的了解不只停留在HDL级。工作要求是感兴趣就好。读博要求是想做可重构系统相关的研究。其他的都可商量。
^_^(2008-03-21 01:00)
 最近收到很多网友的email和纸条,很感谢各位对我blog的关注。这几天比较忙,没时间写blog了。过了这几天我会继续写的。EDK的使用我会继续写下去,还有网友说的回读双核通信我会再写的详细些。重点标记一下,要不就忘了。
 
通过ipif的中断不会用(2008-03-19 00:30)
 自定义IPCore一般会生成两个文件user_logic和core名字.VHD。user_logic是用户逻辑,其与总线连接的信号和中断都要经过ipif,可是中断信号ms在ipif中做了很复杂的处理,在user_logic中无法向外发中断。无奈只能将user_logic的中断信号绕过ipif,直接连到中断控制器上。
EDK简单使用流程(3)(2008-03-13 12:40)
继续我的长篇“简单使用流程”。一不小心写了这么长。
今天该写建工程向导中的软件初始设置。
7、software setup  STDIN、STDOUT选择串口就行(第5步要选择串口),这样程序中的print和xil_printf就可以在串口上输出。在EDK中一般不用printf这个函数,这个函数在代码段中占几十K,如果只输出固定的字符串用print,需要%d %s之类的用xil_printf这两个省资源。如果设计中代码段的memory足够大,也可以用printf。Boot Memory 就是程序在哪里启动了(ppc的启动地址是0xFFFFFFFC)。窗口下边是要生成的两个软件工程。建议至少选一个,这样就不用自己建了。
8、configure XXXXXX test application 如果第7步中选择生成软件工程会出现这个窗口,这个窗口是对软件工程进行配置的。根据需要选。
9、之后就没什么要选的了。到“finish”这个向导就结束了。向导中的设置在工程建完后都是可以改的。
向导建完后,这个