网站重新上线,多谢朋友们的关心
Dec
14
目标:GPIO - Button 产生Interrupt。Interrupt处理函数中点亮LED
HW:Spartan 3E BSB + Button + LED + UART
手工添加OPB_INTC 1.00.c
连接Button - Interrupt Port到OPB_INTC - Intr Port
连接OPB_INTC - IRQ Port到 MicroBlaze - Interrupt Port
SW:
注:
如果在MSS文件中给peripheral driver添加int_handler parameter,就可以不需要在主程序内register ISR handler了。这个过程中要注意int_port的name是peripheral的pin name,不是signal name。
参考资料:
est_rm.pdf - Appendix B: Interrupt Management
Xapp778
GPIO Datasheet
psf_rm.pdf - Char 6 MSS - INT_HANDLER
附件包含MHS, MSS, BSB, int1.c, xparameters.h
HW:Spartan 3E BSB + Button + LED + UART
手工添加OPB_INTC 1.00.c
连接Button - Interrupt Port到OPB_INTC - Intr Port
连接OPB_INTC - IRQ Port到 MicroBlaze - Interrupt Port
SW:
引用
Main:
1. Initialize LED, set LED direction
2. Initialize Button, set Button direction
3. Start interrupt controller
4. Enable button interrupt
5. Enable MicroBlaze interrupt
6. Register button ISR handler
button_int_handler:
1. Read GPIO_ISR
2. If GPIO_ISR = 1, read button status and set LED status
3. Clear interrupt
1. Initialize LED, set LED direction
2. Initialize Button, set Button direction
3. Start interrupt controller
4. Enable button interrupt
5. Enable MicroBlaze interrupt
6. Register button ISR handler
button_int_handler:
1. Read GPIO_ISR
2. If GPIO_ISR = 1, read button status and set LED status
3. Clear interrupt
注:
如果在MSS文件中给peripheral driver添加int_handler parameter,就可以不需要在主程序内register ISR handler了。这个过程中要注意int_port的name是peripheral的pin name,不是signal name。
引用
BEGIN DRIVER
PARAMETER DRIVER_NAME = gpio
PARAMETER DRIVER_VER = 2.01.a
PARAMETER HW_INSTANCE = Buttons_4Bit
PARAMETER int_handler = button_int_handler, int_port = IP2INTC_IRPT
END
PARAMETER DRIVER_NAME = gpio
PARAMETER DRIVER_VER = 2.01.a
PARAMETER HW_INSTANCE = Buttons_4Bit
PARAMETER int_handler = button_int_handler, int_port = IP2INTC_IRPT
END
参考资料:
est_rm.pdf - Appendix B: Interrupt Management
Xapp778
GPIO Datasheet
psf_rm.pdf - Char 6 MSS - INT_HANDLER
附件包含MHS, MSS, BSB, int1.c, xparameters.h
Nov
27
在EDK添加User IP主要通过IPIF Wizard。它可以帮助生成User IP模板和PLB/OPB Bus接口,使得User IP开发变得很容易。
创建UserIP流程主要分为以下几步:
1. 用IPIF Wizard创建Template
-- 只要用鼠标点几下就可以了,很方便
-- 让Wizard创建ISE Project能比较方便地修改UserIP功能
2. 修改代码,添加用户功能
-- 修改user_logic.vhd和ip_name.vhd,添加用户功能,添加外部port
-- 如有有外部接口,添加到MPD文件中。
-- 如果调用其他文件,修改PAO文件。(或者在后续的导入过程使用XST的prj文件)
3. 将完成的UserIP导入
-- 不是所有情况都需要导入,只有在修改了port, parameter属性等Import可以修改的属性时才需要重新import。
4. 连接UserIP
-- 连接Bus, Port,分配Address
-- 为External Port添加UCF LOC
5. 写相应的软件和驱动
创建UserIP流程主要分为以下几步:
1. 用IPIF Wizard创建Template
-- 只要用鼠标点几下就可以了,很方便
-- 让Wizard创建ISE Project能比较方便地修改UserIP功能
2. 修改代码,添加用户功能
-- 修改user_logic.vhd和ip_name.vhd,添加用户功能,添加外部port
-- 如有有外部接口,添加到MPD文件中。
-- 如果调用其他文件,修改PAO文件。(或者在后续的导入过程使用XST的prj文件)
3. 将完成的UserIP导入
-- 不是所有情况都需要导入,只有在修改了port, parameter属性等Import可以修改的属性时才需要重新import。
4. 连接UserIP
-- 连接Bus, Port,分配Address
-- 为External Port添加UCF LOC
5. 写相应的软件和驱动
Nov
22
初试BFM。
用CIP新建IP到Project,自动生成BFM工程。
打开bfmsim下的工程,Simgen,报错:
把主project的vhd copy到这个project也不能解决问题。
Solution1: 用CIP时,不要将IP建到project下,而是用上面一个选项:To an EDK user repository。
将IP建到repository中,Simgen就能找到IP了,接下去仿真也没有问题。
Solution2: 在EDK --> Edit --> Preference --> Golbal Peripheral Repository中设置一个Golbal Repository,把新建的IP目录拷贝到Golbal Repository目录中去。
Repository的目录结构为:
用CIP新建IP到Project,自动生成BFM工程。
打开bfmsim下的工程,Simgen,报错:
引用
Generating simulator compile script ...
ERROR:MDT - File not found in any repository
'test_ip2_v1_00_a/hdl/vhdl/user_logic.vhd'
ERROR:MDT - File not found in any repository
'test_ip2_v1_00_a/hdl/vhdl/test_ip2.vhd'
ERROR:MDT - File not found in any repository
'test_ip2_v1_00_a/hdl/vhdl/user_logic.vhd'
ERROR:MDT - File not found in any repository
'test_ip2_v1_00_a/hdl/vhdl/test_ip2.vhd'
把主project的vhd copy到这个project也不能解决问题。
Solution1: 用CIP时,不要将IP建到project下,而是用上面一个选项:To an EDK user repository。
将IP建到repository中,Simgen就能找到IP了,接下去仿真也没有问题。
Solution2: 在EDK --> Edit --> Preference --> Golbal Peripheral Repository中设置一个Golbal Repository,把新建的IP目录拷贝到Golbal Repository目录中去。
Repository的目录结构为:
引用
EDK_REPOSITORY directory
└─MyProcessorIPLib
├─pcores
│ └─test_ip_v1_00_a
└─drivers
└─MyProcessorIPLib
├─pcores
│ └─test_ip_v1_00_a
└─drivers
Oct
20
在Xilinx Journal上,一直都有ESL工具的介绍,特别是去年貌似有一期讲的都是ESL,我没看懂多少,于是扔在了一边。最近看了Kevin Xie的blog,发现自己的确是他说的那类忽视ESL,“对新出现的系统级设计ESL工具不屑一顾”的人。特别是看了Xilinx CTO - Ivo Bolsens在清华的演讲录相后,发现ESL貌似的确是将来的趋势之一。于是决定学习一下ESL。
1. 什么叫ESL?
在Xilinx ESL主页[中文][English]上,ESL是Electronic System Level的缩写,与RTL(Register Transfer Level)对应。
2. ESL能为我们做什么?
在比RTL更高一级的层次上,ESL可以用高级语言(比如ANSI C)——而不是硬件描述语言(比如Verilog和VHDL)——来建模。ESL工具可以直接在这个层次上将代码综合并实现到FPGA。这样设计人员只需要将精力集中在算法一层,而不需要关心底层的硬件实现了。在工具可靠的情况下,设计实现的效率将提高许多倍。
<未完待续>
1. 什么叫ESL?
在Xilinx ESL主页[中文][English]上,ESL是Electronic System Level的缩写,与RTL(Register Transfer Level)对应。
2. ESL能为我们做什么?
在比RTL更高一级的层次上,ESL可以用高级语言(比如ANSI C)——而不是硬件描述语言(比如Verilog和VHDL)——来建模。ESL工具可以直接在这个层次上将代码综合并实现到FPGA。这样设计人员只需要将精力集中在算法一层,而不需要关心底层的硬件实现了。在工具可靠的情况下,设计实现的效率将提高许多倍。
<未完待续>
Sep
24
ISE iMPACT和ChipScope Pro都支持远程调试,Client可以通过网络连接到一台装了Cable的Server电脑进行配置。
远程调试可以达到多人共用一块Demo板的目的。
ISE iMPACT的Server程序是%XILINX%/bin/nt/cableserver.exe
启动server后在Client端通过iMPACT的Cable Setup设置IP地址。
ChipScope Pro的server程序是%ChipScope%/bin/nt/cs_server.bat
启动server后在Client端通过ChipScope Analyzer的JTAG Chain --> Server host setting设置IP地址。
远程调试可以达到多人共用一块Demo板的目的。
ISE iMPACT的Server程序是%XILINX%/bin/nt/cableserver.exe
启动server后在Client端通过iMPACT的Cable Setup设置IP地址。
ChipScope Pro的server程序是%ChipScope%/bin/nt/cs_server.bat
启动server后在Client端通过ChipScope Analyzer的JTAG Chain --> Server host setting设置IP地址。









