首页>>论坛 >>技术社区 >>OpenHW社区论坛 >>EDK及片上处理器
|
我要发帖  | 我要投票  | 我要回复  | 收藏

如何在PLB总线上添加自定义RAM.

版主: Jerry Fan  玄剑  jennyzheng  XUPteam 
如何在PLB总线上添加自定义RAM.
 

拟使用双口RAM(例如10kbyte)做视频采集用,双口RAM一端给视频流,另一端需要如何才能提供给PLB总线(提供时钟,地址线,数据线,还需要什么信号?)?PLB_IPIF使用需要注意哪些事项?

哪位高手可否提供简单例程?

或者,开发工具里边的双口RAM IP是否保留一个端口给用户自定义使用?

 
相关主题
春江钓徒
回复 链接 收藏
 
回复:如何在PLB总线上添加自定义RAM.
 

直接使用PLB上的BRAM就可以了

附件是它的说明

 
Walkie
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
直接使用PLB_BRAM就可以了。
你可以试一下,这是一个EDK的IPcore
http://www.xilinx.com/support/documentation/ip_documentation/plb_bram_if_cntlr.pdf
 
Walkie
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
问题是有没有提供一个端口给用户写数据.
 
春江钓徒
回复 链接 收藏
 
回复:如何在PLB总线上添加自定义RAM.
 

原帖由hxxfff于2008-05-23 20:55发表:
问题是有没有提供一个端口给用户写数据.

好象可行啊,从来没有去留意过,原来这个核只是个控制器,不带bram的可以自己添加BRAM模块

 

附件:请先登陆查看附件!
 
春江钓徒
回复 链接 收藏
 
回复:如何在PLB总线上添加自定义RAM.
 

原帖由Walkie于2008-05-23 11:23发表:
直接使用PLB_BRAM就可以了。你可以试一下,这是一个EDK的IPcorehttp://www.xilinx.com/support/documentation/ip_documentation/plb_bram_if_cntlr.pdf

问题来了,那些引脚好像只能与自带的BRAM IP 相连啊,引脚好像没有分别引出,而是简单的一个PORTA.如图,如何才能把自己的RAM(一端需要视频数据写入)挂上去呢?

 

附件:请先登陆查看附件!
 
春江钓徒
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
把default的port引出来。
自己改就可以了。
在port标签然后右击选择all
 
Walkie
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
对随便哪一个IPcore右击,选择all
 
Walkie
回复 链接 收藏
 
回复:如何在PLB总线上添加自定义RAM.
 

原帖由Walkie于2008-05-24 14:50发表:
把default的port引出来。自己改就可以了。在port标签然后右击选择all

把default的port引出来???修改HDL吗?

 
春江钓徒
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
把default的port引出来。自己改就可以了。
具体的做法:
在port标签下
随便选择哪个IPcore右击选择all 就可以了。
 
Walkie
回复 链接 收藏
 
回复:如何在PLB总线上添加自定义RAM.
 

正解啊

 
春江钓徒
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
呵呵,以后还有什么问题尽量在这边发贴吧,
预祝你项目顺利
 
Walkie
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
不错!!
学习ing
 
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
PLB_BRAM的驱动好像没有提供啊,xbram.h这个文件都没有:
Xilinx Processor IP Library
Software Drivers
--------------------------------------------------------------------------------
Main Page | File List
Xilinx Driver bram v1_00_a File List
Here is a list of all documented files with brief descriptions:xbram.h
Copyright © 1995-2007 Xilinx, Inc. All rights reserved.
 
春江钓徒
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
不知到使用如下API是否可行?不过也有一个问题,我的BRAM是64bit的,以下API好像不支持.
Typedefs
typedef Xuint32 XIo_Address

Functions
Xuint8 XIo_In8 (XIo_Address InAddress)
Xuint16 XIo_In16 (XIo_Address InAddress)
Xuint32 XIo_In32 (XIo_Address InAddress)
void XIo_Out8 (XIo_Address OutAddress, Xuint8 Value)
void XIo_Out16 (XIo_Address OutAddress, Xuint16 Value)
void XIo_Out32 (XIo_Address OutAddress, Xuint32 Value)
Xuint16 XIo_InSwap16 (XIo_Address InAddress)
Xuint32 XIo_InSwap32 (XIo_Address InAddress)
void XIo_OutSwap16 (XIo_Address OutAddress, Xuint16 Value)
void XIo_OutSwap32 (XIo_Address OutAddress, Xuint32 Value)

--------------------------------------------------------------------------------
 
春江钓徒
回复 链接 收藏
 
xbram.h找到了,没有内容,只有注释.
 
/* $Id: xbram.h,v 1.1 2006/02/15 16:36:44 moleres Exp $ */
/******************************************************************************
*
* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"
* AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND
* SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE,
* OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,
* APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION
* THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,
* AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE
* FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY
* WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE
* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR
* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE.
*
* (c) Copyright 2006 Xilinx Inc.
* All rights reserved.
*
******************************************************************************/
/*****************************************************************************/
/**
*
* @file xbram.h
*
* This driver exists only to allow the EDK tools to create a memory test
* application and to populate xparameters.h with memory range constants.
* There is no source code.
*
******************************************************************************/
 
春江钓徒
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
什么意思?
你想自己通过函数对它进行操作吗?
 
Walkie
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
我想用函数把双口RAM里边的数据读出来,显示,验证数据是否采集进来了.
双口RAM 一端是8bit(数据源)的,一端是64bit(plb_bram_ctr).现在的问题是如何读取存储深度为64bit的数据.
 
春江钓徒
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
可以直接读地址上的数据吗?
扔到标准输出设备。。
 
Walkie
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
可以,但是我用的是8bit 16bit,32bit的API,好象找不到64bit的:
Functions
Xuint8 XIo_In8 (XIo_Address InAddress)
Xuint16 XIo_In16 (XIo_Address InAddress)
Xuint32 XIo_In32 (XIo_Address InAddress)
void XIo_Out8 (XIo_Address OutAddress, Xuint8 Value)
void XIo_Out16 (XIo_Address OutAddress, Xuint16 Value)
void XIo_Out32 (XIo_Address OutAddress, Xuint32 Value)
Xuint16 XIo_InSwap16 (XIo_Address InAddress)
Xuint32 XIo_InSwap32 (XIo_Address InAddress)
void XIo_OutSwap16 (XIo_Address OutAddress, Xuint16 Value)
void XIo_OutSwap32 (XIo_Address OutAddress, Xuint32 Value)

使用32bit获得的结果如下(随意取了一部分地数据,发现想同地址空间地数据在实时更新),但我数据线的位宽是64bit的:
1752988007 1537046882 1886805620 1280390472
-889194497 1430214978 992623422 1568829269
-827465777 -1585071452 1986680949 1229731658
523186992 1784768352 1518689177 1484091993
-1871144816 1313101390 1346460246 1027353663
944457547 1986100841 -117442308 33619970
-1921871732 -50332164 539371808 1212758339
1129996629 539631914 -2091220621 1381121616
707337771 1043150396 959264826 -1349079121
1194607410 1296649032 1113540438 -6657
1600476258 -771753008 -1411264597 556742433
-385875969 1534223997 674702898 1245333577
1515208792 -1370993359 826690351 -1114113
1162425932 -1970302827 196610 1616660070
-131330 -1431587946 894453300 370741014
-1888379791 893990214 791096882 824652086
-50332164 1314479696 -1334785 16777730
1884651355 1244872750 624370738 1464361309
1767722088 1230059849 2122082428 -16843010
1414939470 1197951340 1532910396 -16973826
-829461553 -928589881 -1551851612 1921484658
1230790751 809381693 -1417303388
 
春江钓徒
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
void XIo_Out32 (XIo_Address OutAddress, Xuint32 Value)
去看这个函数怎么实现的,然后自己写一个64bit的,
 
Walkie
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
是否读取模式与数据线位宽无关,数据线位宽仅与传输模式有关?
 
春江钓徒
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
64位的要自己拼
可以参考这个API
void XIo_Out32 (XIo_Address OutAddress, Xuint32 Value)
看看他是如何实现的,自己写
 
Walkie
回复 链接 收藏
 
回复:如何在PLB总线上添加自定义RAM.
 

传输模式是什么?是否可以具体一点?

 

 

原帖由hxxfff于2008-05-28 09:09发表:
是否读取模式与数据线位宽无关,数据线位宽仅与传输模式有关?

 
Walkie
回复 链接 收藏
 
RE:如何在PLB总线上添加自定义RAM.
 
原来API的位宽与RAM的数据位宽无关.RAM的数据位宽只与传输模式有关.
 
春江钓徒
回复 链接 收藏
 
我要发帖  | 我要投票  | 我要回复  | 收藏