在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5252|回复: 10

[原创] 一款超精炼的8051软核MCL51,大家分析一下,核心怎么能做那么小?

[复制链接]
发表于 2020-1-4 16:09:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 fourwave 于 2020-1-5 22:48 编辑

应该是2019年才上线的。附件我没有下载说明书和图视频,因为github太难下载,我下了几次都下不来,代码是完整的,大家也可以去github下。下了补充过来。

MCL51的内核,不是用逻辑实现,而是全部用一个模拟8051指令集的微序列器来实现

MCL51是一种超小型,基于微序列器,100%指令集兼容的8051内核,只消耗312个Xilinx LUT,太精炼了。 而其他人编写的51内核,动辄消耗3000多个LUT。
(楼主评价:我真的想知道为什么能做这么小)



也就是说,MCL51只用了竞争对手10%的资源,就实现了相同的性能。他是用的micro code sequencing, 不知道该怎么翻译,微代码序列器? 也就是,他设计的内核,不是用逻辑实现,而是全部用一个模拟8051指令集的微序列器来实现

早两年,xilinx就和MCL51合作,推出了内嵌4个51核的开发板。

关键特性:

100%兼容8051指令集
多达128个源的向量中断矢量
外设的代理地址可实现完整的总线大小灵活性,
带有UART的MCL51(带Intel-Hex Loader)和双定时器仅消耗312个Xilinx LUT Artix-7 FPGA

github有他的代码,核心执行单元是以加密的形式提供。我下载的只是代码,说明书等内容怎么也下载不下来,等有哪位大侠再试试看,能不能下下来。https://github.com/MicroCoreLabs/Projects/tree/master/MCL51

MCL51 8051内核是使用高性能32位微序列器实现的嵌入式处理器内核,该序列器可利用多达312个Xilinx LUT和两个Block RAM。它与经典的8051指令集100%兼容,并具有总线接口单元(BIU),该接口提供最大程度的灵活性,允许根据用户设计定制SFR寄存器和外设。对原始8051的改进包括矢量中断系统和代理寻址,该寻址使任何总线宽度的外设都可以连接到内核。

该内核在一套软件套件上进行了测试,该套件在多种仿真工具以及真正的8051硅片上均得到验证。

http://www.microcorelabs.com/faq.html

问:MCL51和MCL86内核有多小?

答:MCL86执行单元(EU)内核消耗308个LUT,不到最小的Kintex-7 FPGA的百分之一,少于Lattice XO2-7000 FPGA的百分之十,而MCL51是312个Xilinx Artix-7 LUT。由于高性能的微序列器以微码实现了处理器的所有功能,因此可以实现这些超小的占用空间。

问:MicroCore Labs内核的大小与其他供应商的类似处理器内核相比如何?

答:MCL51和MCL86利用高性能的32位微序列器,所有目标处理器的功能都以微代码进行了仿真。这样提供的实现不到市场上竞争内核的十分之一。MicroCore Labs内核还具有将cpu的执行单元与总线接口单元分离的额外优势,这使用户可以针对其特定设计定制外围设备和总线接口,而无需任何逻辑或外围设备保持空闲状态。

问:MCL51包含哪些外围设备?
答:MCL51分为执行单元和总线接口单元。EU包含模拟8051指令集的微序列器,并以加密的verilog形式提供; BIU包含SFR和外围设备,并以源代码Verilog形式提供。MCL51提供了一个示例UART,其中包括一个Intel-Hex Loader以及一个双通道定时器和一个中断控制器,它们可以代理寻址,而不是像原始8051那样与SFR集成在一起。拥有独立的BIU可以使用户在其设计中添加高度定制的外围设备。






Core.rar

24.43 KB, 下载次数: 99 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 2020-1-4 16:19:51 | 显示全部楼层
本帖最后由 fourwave 于 2020-1-5 22:45 编辑

做一个好的cpu真不容易,看看人家严谨的测试方法,我确信国内的大多数设计都是有bug的

====================================

https://microcorelabs.wordpress.com/page/2/
MCL51测试方法
2016年4月30日MicroCore实验室
MicroCore Labs MCL51经过三个阶段的测试:

在第一阶段中,用汇编代码编写了一组详尽的测试,它们将练习每个8051操作码,然后观察结果。检查PSW标志是否指令改变了状态,并清除并重新检查了所有四个寄存器组,以确保操作码不会影响预期目标之外的寄存器或存储器。每个布尔指令都在支持位映射操作的多个内存范围上运行,而数学和字符串指令则针对所有可能的数据值运行。

开发这些测试后,它们将针对多种仿真工具(其中一些是主要供应商)运行。我很感兴趣地发现,某些工具并不是每条8051指令都100%正确!

谁是供应商?错误是什么?我没说 (楼主评价:外国人也很滑头哈)

一旦针对多个供应商模拟器对测试进行了验证,我便连接了一个系统,以在真实的芯片上运行测试。我选择了40个封装的无ROM 8051变体,并具有3.3V IO。这允许将其直接连接到FPGA测试面板


当测试代码出现故障时,它使用简单的循环,因此可以轻松地运行测试,只需查看范围即可查看它是否在任何无限循环中运行。当它循环到最终地址时,表明所有测试都已成功运行。测试代码接近6KB,因此分为三个部分并进行了独立测试。
在通过已知正确的模拟器和真实的芯片验证了测试代码之后,我准备在Verilog仿真环境中针对MCL51内核运行它。我很高兴,但使用此测试套件纠正了MCL51内核中的一些细微错误,但我现在非常有信心该内核100%兼容并正确实现了8051指令集!

 楼主| 发表于 2020-1-4 16:24:28 | 显示全部楼层
LOCKSTEP QUAD MODULAR REDUNDANT SYSTEM已上传到GITHUB
十一月26,2019MicroCore实验室
我刚刚将我的Lockstep Quad模块化冗余系统上传到了Github!该系统包含四个MCL51,它们是微小的基于微序列器的8051兼容CPU,它们以步进方式运行。我的感觉是TMR(三模块冗余)是好的,但是如果其中一个模块出现故障怎么办?这样,您将拥有一个只有两个正常模块的易受攻击的系统。我的解决方案是添加一个CPU,使计数以同步方式运行到四个CPU!系统最好的部分是,如果模块发生故障,它可以重建自身,然后重新加入锁步!由于处理器基于微序列器的实现,因此这是可能的。我相信这使该系统具有独特性,因为大多数n模块化冗余系统均无法自我修复并重新加入锁定步伐!
 楼主| 发表于 2020-1-4 16:33:41 | 显示全部楼层
关于微代码,microcode,还找了个网站说明一下,大家也可以看看,我是看不懂
https://www.vttoth.com/CMS/proje ... microcode-sequencer

MicroProgram_Sequencer.pdf

195.56 KB, 下载次数: 87 , 下载积分: 资产 -2 信元, 下载支出 2 信元

发表于 2020-1-5 12:23:44 | 显示全部楼层
太好了,入门学习
发表于 2020-1-9 14:54:34 | 显示全部楼层
thank you for sharing
发表于 2020-2-18 15:47:10 | 显示全部楼层
LZ分享的好资源,长见识了,学习学习!
发表于 2020-4-13 10:55:17 | 显示全部楼层
感谢分享~~~
发表于 2020-11-10 00:55:52 | 显示全部楼层
谢谢楼主分享
发表于 2021-1-4 19:10:42 | 显示全部楼层
没有说明书,不知道咋用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-28 22:00 , Processed in 0.033803 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表