分享经验 分享快乐

分页: 1/24 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]

ModelSim技巧一则

[不指定 2008/08/19 11:02 | by RickySu ]
在vsim后,run之前,输入命令
引用
log -r /*

可以将所有信号的翻转情况记录下来,如果需要在Wave窗口再添加信号,就不用restart,添加信号,然后再重新run了。
Tags:

EDK works with Sysgen

[不指定 2008/08/04 17:08 | by RickySu ]
同时使用EDK和Sysgen,有两种流程:
1、在Sysgen中做hw co-sim;
2、用Sysgen生成pcore然后手动添加到EDK工程中。

参考文档:
- Sysgen User Guide --> Hardware/Software Co-Design --> Design with Embedded Processors and Microcontrollers
- API Documents (在生成PCORE的src目录中)

数据交互方法:
- From/To Registers
- From/To FIFO
- Shared Memory

使用Shared Memory时,记得TestBench中的Shared Memory要设置成 "owned and initialized elsewhere",否则等于两处地方都放置了同样名字的Shared Memory,会产生冲突。

API使用方法
参考API文档,下面有例子。基本流程是:

引用
    xc_iface_t *iface;  //初始化interface

    xc_from_reg_t *fromreg_gray;  //初始化register
    xc_to_reg_t *toreg_red, *toreg_green, *toreg_blue; //初始化register
    xc_shram_t *shram; //初始化shared memory
    xc_to_fifo_t *tofifo; //初始化fifo

    // initialize the software driver
    xc_create(&iface, &RGB2GRAY_PLBW_ConfigTable[0]);

    // obtain the memory locations
    xc_get_shmem(iface, "result",  (void **) &fromreg_gray);  //Register 中间引号中的字符串是Sysgen中起的名字
    xc_get_shmem(iface, "red",   (void **) &toreg_red);
    xc_get_shmem(iface, "green", (void **) &toreg_green);
    xc_get_shmem(iface, "blue",  (void **) &toreg_blue);
    xc_get_shmem(iface, "cap_ram0", (void **) &shram);  //Shared Memory
    xc_get_shmem(iface, "fifo", (void **) &tofifo);  //Shared Memory

    //写Shared Memory
      for (i=0;i<10;i++) {
    xc_write(iface, xc_get_addr(shram->addr, i), (const unsigned) i+60);
  }

    //写Register
    xc_write(iface, toreg_red->din, 2);

    //读 Register
    xc_read(iface, fromreg_result->dout, &result);
Tags: , , ,

malloc

[不指定 2008/07/11 09:47 | by RickySu ]
1. 在EDK里怎么用malloc?要不要include什么头文件?
- 不需要include。直接用就可以了。malloc是包含在lib里的。

2. malloc格式?
double *p = malloc( sizeof *p ); /* 不推荐用 sizeof( double ) */
free(p);
//according to http://cpp.ga-la.com/html/3/3/0510/7.htm

3. 潜在问题?
Xilinx AR30878 - reset后malloc返回null
其实如果malloc后,如果已经free了,那么再怎么reset也无妨。问题只是malloc后没有free,导致.bss内容变化,但reset cpu不重写BRAM/DDR RAM中的.bss,因此需要一段代码在启动时重新加载.bss - 这样.bss就需要先存储到non-volatile中了。很麻烦吧:)
Tags: , ,

Ricky版Tips of Xilinx v0.06

[不指定 2008/07/11 09:37 | by RickySu ]
此篇宗旨:因为还写了一篇文章叫《Ricky版FPGA常见问题(FAQ)》,内容相近却不同,难免混淆。此篇仅写一些Xilinx提供的一些不引人注意却又有用的小工具和某个工具的属性。

1、coe文件模板
经常会不知道coe文件怎么写,怎么生成,语法怎么回事。原来在%Xilinx%/coregen/data目录下,有coe文件模板,各种作用下的模板,比如DA FIR, BlockRAM等等

2、控制XST插入buffer的方法
1、用buffer_type约束。具体使用方法在XST User Guide
2、手动插入BUFG,然后设置允许使用BUFG的数量,那么手动插入的将拥有高优先级而先占用了BUFG。

3、同时更改所有IO管脚的电平标准
要更改所有IO Pin的IO Standard,可以打开PACE,选择所有管脚(通过shift或ctrl键多选),按右键,Create Constraints,然后自己选需要的吧:)

4、子模块的网表分别存在多个目录怎么办
当子模块以网表形式提供时,NgdBuilder (Translate)会搜索工程目录下的edn, ngc等网表文件。
如果存在子目录中,在Translate属性中的Macro Search Path填写目录名。
如果有多个子目录,不是在Macro Search Path中填写多个目录名,而要在下面一条填写其他Translate option的地方写上 -sd -sd 。每个-sd后只能写一个目录名。这一点在dev.pdf中提到。

5、Timing Analyzer中的Tioop之类的delay type的图形解释?
Tioop之类的延时信息首先是在Datasheet中有详细定义。一般在DC and Switching Characteristics章节中。Datasheet会列出定义以及各个速度等级的延时。
另外在ISE的安装目录doc\usenglish\help\delay_types中还有图形化的解释,只不过不是所有器件都有。

6、xps_archiver 打包用于重建工程的文件
http://www.rickysu.com/bo/post/202/
Tags: , ,

xps_archiver

[不指定 2008/07/11 09:28 | by RickySu ]
原来还有这么个小工具,可以把XPS所管理的文件备份并压缩成zip文件,包含重建一个EDK工程所需要的最少量的文件,方便重建工程、版本管理、工程分享。

叫啥名 - xps_archiver
在哪里 - EDK安装目录下bin/nt/
都谁有 - 我看到9.1 9.2 10.1都有,8不知道
怎么用 - 打开cmd,cd到工程目录,xps_archiver -o xx.zip xx.xmp
产生啥 - archiver目录下产生xx.zip
Tags: , ,
分页: 1/24 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]