☆让我们来做Blogroll☆
- 如果您是一位FPGA Design/Embedded Design设计师
- 如果您有主要用于记录技术经验的Blog
- 如果您的Blog主要发表原创文章或者外文翻译
- 如果您也想交换链接
那么当您提交《申请链接表单》后,我会将您的网站添加到友情链接的Blogroll栏目中。
- 首次尝试接受10位朋友的申请 --> 还有5个名额哦
- 仅接受相关技术站点
- 暂不接受商业站点
- 仅提供文字链接
- Ricky拥有最终解释权
- 如果您是一位FPGA Design/Embedded Design设计师
- 如果您有主要用于记录技术经验的Blog
- 如果您的Blog主要发表原创文章或者外文翻译
- 如果您也想交换链接
那么当您提交《申请链接表单》后,我会将您的网站添加到友情链接的Blogroll栏目中。
- 首次尝试接受10位朋友的申请 --> 还有5个名额哦
- 仅接受相关技术站点
- 暂不接受商业站点
- 仅提供文字链接
- Ricky拥有最终解释权
Jul
2
Ethernet Lite MAC 功能
- 功能
接口: MII
速度: 10M/100M bps (时钟速率必须大于以太网速度的一半)
支持半双工和全双工 ( C_DUPLEX 参数控制)
可选的乒乓Buffer (C_TX_PING_PONG 和 C_RX_PING_PONG 参数控制)
- 限制
不支持多播 - 只支持单播和广播。(Datasheet第23页)
不支持Jumbo Frame - 仅支持标准的1500Byte长度的Frame。
不支持Burst - 使用了plbv46_slave_single_v1_00_a作为PLB接口,不支持Burst操作
Ethernet Lite MAC 结构

- 功能
接口: MII
速度: 10M/100M bps (时钟速率必须大于以太网速度的一半)
支持半双工和全双工 ( C_DUPLEX 参数控制)
可选的乒乓Buffer (C_TX_PING_PONG 和 C_RX_PING_PONG 参数控制)
- 限制
不支持多播 - 只支持单播和广播。(Datasheet第23页)
不支持Jumbo Frame - 仅支持标准的1500Byte长度的Frame。
不支持Burst - 使用了plbv46_slave_single_v1_00_a作为PLB接口,不支持Burst操作
Ethernet Lite MAC 结构

Jul
2
我也是第一次知道有这么个工具:只要有布线后的NCD网表,就可以通过ReportGen工具产生各种报告文档,比如clock region report, delay report, pad report, unrouted net report等等。
直接在命令行中输入reportgen就能查看使用说明。
直接在命令行中输入reportgen就能查看使用说明。
Jun
16

1. 安装RHEL5. 由于害怕缺少某些库到时候再找很麻烦,于是求省事把RHEL5完全安装了。64位CPU, 16G内存, 设置了32G的SWAP。其他缺省。
2. 放入ISE 11.1 DVD,RHEL5 自动 mount 到 /media/Xilinx_ISE11_DS
3. 尝试了在光盘中执行 ./xsetup,发现Permission Denied。
4. 无奈把光盘拷贝到本地硬盘然后执行
cp -R /media/Xilinx_ISE11_DS ~/ --拷贝到用户目录
chmod -R 777 ~/Xilinx_ISE11_DS/ --添加执行权限和写权限
~/Xilinx_ISE11_DS/xsetup --开始安装
chmod -R 777 ~/Xilinx_ISE11_DS/ --添加执行权限和写权限
~/Xilinx_ISE11_DS/xsetup --开始安装
5. 安装很快,ISE套装不含EDK版本只装了10分钟不到。
6. 配置License。在Copy License那里选择Choose,然后选中申请好的xilinx.lic文件,然后OK,就会自动把License复制到相应的地方,并显示出有哪些功能可用。
7. 打开一个Shell,运行ISE
source /opt/Xilinx/11.1/settings64.csh --这是我的安装目录
ise &
ise &
8. 在安装目录中可以发现settings32.csh和settings64.csh,说明如果CPU是64位的,ISE会把32位和64位软件全部安装上的。只要source相应的settings,就可以执行32位或64位版本。
9. settings脚本有csh和sh之分。其中csh是给CShell用的,sh是给Bash用的。如果要更改用户使用的shell,可以让root修改/etc/passwd文件。
10. 如果觉得每次运行都要打命令行比较麻烦,可以在桌面上做一个快捷方式。
- 把以下内容存成一个文件(我叫ise.csh):
#!/bin/csh
source /opt/Xilinx/11.1/settings64.csh --这是我的安装目录
ise &
source /opt/Xilinx/11.1/settings64.csh --这是我的安装目录
ise &
- 给这个文件添加执行权限:
chmod +x ise.csh
- 然后把这个ise.csh移动到桌面,在双击弹出窗口中按RUN就可以运行ISE了。
Jun
12
微处理器经常要与外部逻辑交互数据 - 可能是ISE里面自己写的逻辑,也可能是Sysgen中的逻辑,当然还可能是片外的逻辑。
交互数据有哪些方法?通常万变不离其宗
- Shared Memory: 双向给地址给数据/取数据
- FIFO:单向顺序给/取数据
- Register:单向选中后给/取数据
最常用的是Shared Memory。
FPGA内部有双口BRAM,两边都可以进行数据的读写,数据交互是双向的。
FIFO在一个模块往另一个模块灌数据时比较有用,优点是不用在意地址的产生。
因为Register无法缓存数据,必须一边给了数据后一边直接取走,所以交换数据时不常用。应用场合更适合控制寄存器。最常用的情况就是EDK系统要控制EDK外部的逻辑,比如给出一个使能信号等。
-----------<方法与操作的分割线>---------
EDK中的操作方法:
Shared Memory使用 XPS_BRAM_IF_CNTLR + BRAM_BLOCK。
XPS_BRAM_IF_CNTLR 接在 PLBv46 Bus 上,在Address页面分配相应的Size和Address。这里设的Size就是使用到的BRAM的大小。
BRAM_BLOCK 的 PORTA 接在 XPS_BRAM_IF_CNTLR 上,PortB Bus 设成 Not Connected,在Port页面将 PortB 所有的IO都 Make External。
FIFO 可以直接使用 FSL Core。
FSL 可以指定使用 BRAM 作为 FIFO,也可以指定使用 Slice 作为 FIFO。根据需求来选择。
Register 可以使用 GPIO Core。
C代码直接寻址然后做数据操作速度会比较快。用Driver中的函数来操作就会比较慢。
交互数据有哪些方法?通常万变不离其宗
- Shared Memory: 双向给地址给数据/取数据
- FIFO:单向顺序给/取数据
- Register:单向选中后给/取数据
最常用的是Shared Memory。
FPGA内部有双口BRAM,两边都可以进行数据的读写,数据交互是双向的。
FIFO在一个模块往另一个模块灌数据时比较有用,优点是不用在意地址的产生。
因为Register无法缓存数据,必须一边给了数据后一边直接取走,所以交换数据时不常用。应用场合更适合控制寄存器。最常用的情况就是EDK系统要控制EDK外部的逻辑,比如给出一个使能信号等。
-----------<方法与操作的分割线>---------
EDK中的操作方法:
Shared Memory使用 XPS_BRAM_IF_CNTLR + BRAM_BLOCK。
XPS_BRAM_IF_CNTLR 接在 PLBv46 Bus 上,在Address页面分配相应的Size和Address。这里设的Size就是使用到的BRAM的大小。
BRAM_BLOCK 的 PORTA 接在 XPS_BRAM_IF_CNTLR 上,PortB Bus 设成 Not Connected,在Port页面将 PortB 所有的IO都 Make External。
FIFO 可以直接使用 FSL Core。
FSL 可以指定使用 BRAM 作为 FIFO,也可以指定使用 Slice 作为 FIFO。根据需求来选择。
Register 可以使用 GPIO Core。
C代码直接寻址然后做数据操作速度会比较快。用Driver中的函数来操作就会比较慢。
Jun
11
XMD的Verify ELF功能在一次调试中帮了大忙。
出问题的情况很奇怪:
- 把Application Initialize to BRAM的时候程序工作不正常
- 用XMD再把程序dow一次,又正常了。
怀疑data2mem出问题,可以BRAM里面又是有值的。
于是怀疑这些值的正确性。用XMD的Verify ELF功能比较BRAM的内容和ELF的内容,结果发现的确有不相符的地方。那就确认是DATA2MEM的过程中出问题了。
此外,Verify ELF还可以用在Flash Writer烧写Flash后检查烧写是否正确:
- 在Bootloader完成,要进行PC指针跳转的最后一步设断点把程序停住,此时Flash中的SREC已经被Bootloader放到了DDR中
- 在XMD中运行Verify ELF检查DDR中的内容是否正确。
出问题的情况很奇怪:
- 把Application Initialize to BRAM的时候程序工作不正常
- 用XMD再把程序dow一次,又正常了。
怀疑data2mem出问题,可以BRAM里面又是有值的。
于是怀疑这些值的正确性。用XMD的Verify ELF功能比较BRAM的内容和ELF的内容,结果发现的确有不相符的地方。那就确认是DATA2MEM的过程中出问题了。
此外,Verify ELF还可以用在Flash Writer烧写Flash后检查烧写是否正确:
- 在Bootloader完成,要进行PC指针跳转的最后一步设断点把程序停住,此时Flash中的SREC已经被Bootloader放到了DDR中
- 在XMD中运行Verify ELF检查DDR中的内容是否正确。








