您尚未登录。

楼主 # 2023-10-28 15:32:48

居然还要使用用户名登录
会员
注册时间: 2023-10-28
已发帖子: 4
积分: 19

国产agm-FPGA使用过程遇到的一个mcu硬核的问题

使用ag10kl144h的内部cpu硬核,规格书写着能够最高200M的主频
写了一个测试程序 测试cpu究竟能跑多快
测试流程如下:
每连续执行1000个nop指令(这些nop是连续执行的 中间没有任何其他指令),就把特定io口取反一次
使用200MHz的时钟提供给cpu,测量io口翻转速度
结果观察到10us才发生一次翻转,产生的方波的频率是50kHz
也就是说 一个nop指令需要10ns,但是上面提供的cpu时钟是200MHz,周期是5ns
难道这个cpu执行一条指令需要两个周期?

如果把提供给cpu的时钟设为100MHz 实测执行一条nop指令需要20ns
是100MHz时钟周期的两倍

请问有人遇到过这样的问题吗

最近编辑记录 居然还要使用用户名登录 (2023-10-28 15:41:31)

离线

#1 2023-10-28 17:33:51

darthmike
会员
注册时间: 2020-11-19
已发帖子: 19
积分: 4

Re: 国产agm-FPGA使用过程遇到的一个mcu硬核的问题

很正常,就跟STM32的H7一样,主频都跑到550M了,纯软件驱动的IO速度也不过才两位数。你这么靠看IO翻转速度来测试实际的指令周期,有点不太严谨

离线

楼主 #2 2023-10-28 18:34:58

居然还要使用用户名登录
会员
注册时间: 2023-10-28
已发帖子: 4
积分: 19

Re: 国产agm-FPGA使用过程遇到的一个mcu硬核的问题

darthmike 说:

很正常,就跟STM32的H7一样,主频都跑到550M了,纯软件驱动的IO速度也不过才两位数。你这么靠看IO翻转速度来测试实际的指令周期,有点不太严谨

不是的 仔细看看我上面写的测试过程,io的两次翻转之间达到了10us级别的延时,这可是FPGA,不是普通mcu。再说即便是mcu也不会有这么差的IO性能。
而且正是考虑到所谓的不严谨,特意在两次翻转之间增加了上千个nop指令,而且这些指令是连续执行的nop,没有其他操作的。
即便不说io翻转速度,单看nop执行的速度,200MHz的主频,1000个nop执行的时间需要10us,这也不对劲吧。

离线

#3 2023-10-28 20:14:46

VisionShow
会员
注册时间: 2022-01-28
已发帖子: 12
积分: 12

Re: 国产agm-FPGA使用过程遇到的一个mcu硬核的问题

没有用过AGM的MCU,  不过有个信息可以参考一下,  AGM176的FPGA, 内部SDRAM标称是166M的,  实际这个FPGA只能稳定运行在125M左右

离线

#4 2023-10-28 22:18:01

duanlin
会员
注册时间: 2023-10-09
已发帖子: 13
积分: 44

Re: 国产agm-FPGA使用过程遇到的一个mcu硬核的问题

请补习现代计算机组成原理。
现代处理器执行指令的速度一般都能超过主频,也就是一个clock拍子会吃进多个指令,
比如1.7MIPS/MHz的机器,主频200MHz,则执行指令的速度是(200*1.7)MIPS。
访问IO并不是核心指令那么快的速度,IO访问需要CPU经过片上互联到控制器,
ARM体系的AHB-APB经由2个桥ACK回来大概就是小几个us。

离线

楼主 #5 2023-10-28 23:44:07

居然还要使用用户名登录
会员
注册时间: 2023-10-28
已发帖子: 4
积分: 19

Re: 国产agm-FPGA使用过程遇到的一个mcu硬核的问题

VisionShow 说:

没有用过AGM的MCU,  不过有个信息可以参考一下,  AGM176的FPGA, 内部SDRAM标称是166M的,  实际这个FPGA只能稳定运行在125M左右

啊这。。。

离线

#6 2023-10-29 13:08:34

tpu
会员
注册时间: 2020-06-15
已发帖子: 34
积分: 36.5

Re: 国产agm-FPGA使用过程遇到的一个mcu硬核的问题

这很有可能是指令存储器访问需要两个周期的原因。

离线

楼主 #7 2023-10-29 21:56:33

居然还要使用用户名登录
会员
注册时间: 2023-10-28
已发帖子: 4
积分: 19

Re: 国产agm-FPGA使用过程遇到的一个mcu硬核的问题

tpu 说:

这很有可能是指令存储器访问需要两个周期的原因。

好吧 但是代码实际上是存储在ram里面
这款FPGA内部的cpu并没有rom 只有两个ram区域 在初始化的时候从芯片外接的spi-flash读取mcu软件加载到指定的ram区域然后执行
这ram应该不会这么拉胯?居然不是零等待?
我猜想是时钟系统某个寄存器需要设置 用来设置总线时钟,cpu时钟这两者与给到cpu模块的主时钟之间的比例关系
但是翻遍了文档资料都没有这个时钟系统方面的说明 太糟糕了

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn