QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2524|回复: 2

求教:关于44b0读取fpga时的奇怪现象

[复制链接]
发表于 2006-5-2 13:06:03 | 显示全部楼层 |阅读模式
用44b0+fpga做了一块板子。
fpga完成计数、开关量输入输出和键盘扫描。
现在出现很奇怪的问题,我在44b0程序中读取计数值时,第一次读取时,读出来的值是正确的。随后我改变输入信号频率,却发现读出的计数值总是不改变。
fpga程序应该没问题的
我怀疑是被armcc编译器优化掉了某些代码
请问:如果我想查看汇编代码,在sdt2.5或ads1.2下如何查看。

谢谢
发表于 2006-5-4 22:36:05 | 显示全部楼层
在AXD下可以查看C文件编译后的汇编代码

源代码窗口点鼠标右键,stepping mode 选disassembly
回复

使用道具 举报

 楼主| 发表于 2006-5-4 22:56:58 | 显示全部楼层
谢谢楼上的朋友!
你能帮我分析一下出现上面问题的原因吗?
我把问题详细描述下:

硬件平台是:s3c44b0x+fpga(cyclone)

开发环境:sdt2.5和quartusii5.0

在fpga中实现了脉冲计数和4x4键盘扫描

现在碰到如下问题:
1、键盘扫描使用中断触发,使用44b0的外部中断3,当有键按下时触发一个外部中断。
通知44b0读取键值,在读键值时同时清fpga中的中断标志(中断设置为下降沿触发,有中断时中断标志为0,所谓清断标志实际上是把它置为1)。可是奇怪的是,第一次按下键时(任意键都行),读出来的键值是正确的。可第二次再按下键,读出来的值总是第一次按下的键值。也就是说,键值寄存器似乎没有更新值。而且有时会出现第二次按键后死机的现象。
  可是,在vhdl程序中,只要有键按下就更新一次键值寄存器的,怎么会一直不变呢?不过第一次按下键总是正确。
  还有就是感觉中断处理也有问题。不过用modelsim仿真好像没问题

2、计数也出现类似情况:
  第一次读计数值时正确,可后面再来读同一通道的计数值,即使实际的输入信号频率已变化了,可是从计数寄存器读出的值总是与第一次读出来的值相同。
  可是,从vhdl程序看,不应该出现这种现象啊。因为我是每秒中计一次脉冲数,每秒计完后就将计数值锁存,当44b0程序来读计数值时,把计数值打到总线上去(上面的键盘扫描原理类似)

我检查了44b0的程序,用了volatile关键字,编译器应该不会优化的。奇怪!

另外,我想看看armcc编译后的汇编代码,请问:在sdt2.5或ads1.2下,如何看到我所写的c不应该程序对应的汇编代码。

李明老师,如果有空的话,帮我分析下这个问题.

谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-21 21:31 , Processed in 0.035991 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表