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

Simple MB Interrupt using GPIO

[不指定 2007/12/14 11:32 | by RickySu ]
目标: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:
引用
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


注:
如果在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


参考资料:
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
Tags: ,

ModelSim -novopt

[不指定 2007/12/13 14:53 | by RickySu ]
ModelSim 6.2 以后默认给vsim, vcom, vlog都加了-vopt选项进行优化。但是算法可能还不是非常完美,经常把以前没问题的project弄得不能仿真。所以有时要给他加-novopt的选项禁止优化。

相关资料:
http://www.xilinx.com/support/answers/25311.htm
http://www.xilinx.com/support/answers/24293.htm
http://www.xilinx.com/support/answers/24776.htm
Tags:

User IP 流程

[不指定 2007/11/27 16:39 | by RickySu ]
在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. 写相应的软件和驱动
Tags: ,
调试EDK的工程一般STDIN/STDOUT必不可少。通常STDIN/STDOUT都是定向到RS232上去的。要是没有RS232该怎么办呢?
答案是可以用JTAG Terminal。

只要Project里有MDM,就可以将RS232定向到一个叫debug_module的模块上。这个Debug Module其实就是XMD。

要打开XMD的该功能,首先下载bitstream,打开XMD连接PPC/MB,dow elf,然后在XMD输入Terminal。Terminal会调用TeraTerm,这样就可以看到Print函数的输出了。如果不想用TeraTerm,也可以让XMD做一个Termianl转发服务器,它可以把数据通过TCP转发出去,这样用windows自带的超级终端也可以收到消息了。

命令行为:
terminal [-jtag_uart_server [port no]]

在MicroBlaze系统中,只要选择用H/W模式debug,MDM就会被默认加上;在PowerPC系统中,默认不会有MDM,但是如果系统已经有OPB总线,还是可以很方便地添加MDM UART的。具体方法是用Debug Configuration中的JTAG UART自动添加功能。

注意:
如果手动添加的MDM模块,需要手动连接OPB总线,并将IP设置为UART FIFO = 8。



参考资料:
Embedded System Toos Reference Manual -- XMD
MDM Datasheet
http://toolbox.xilinx.com/docsan/xilinx9/help/plat...
Tags:

BFM Simgen找不到user logic

[不指定 2007/11/22 11:48 | by RickySu ]
初试BFM。
用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'


把主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
Tags: , ,
分页: 5/24 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]