[求助] 用Verilog实现51单片机内核

yaphetszyj   2016-7-29 15:35 楼主
请教大家,用Verilog实现51单片机内核的具体步骤呢,老师给的方向,不太会,希望大家帮帮我~ 目前我已将51单片机的111条指令都学完了,并将这些指令按照机器周期数、字节数分类了,但在具体实现的时候,不知道从哪里下手,比如我想做一个2级流水的内核,从哪里下手比较好?再就是一些模块,我该怎样分呢?大神们,快来吧,我需要你们!! 本帖最后由 yaphetszyj 于 2016-8-1 10:19 编辑

回复评论 (22)

一个不切实际的毕业设计!
点赞  2016-7-29 20:09
楼主,真心感兴趣做这个,肯定会有好东西出来
ARM公司开始也就7个人。
你可以放开,谈谈你的想法,这样大家好跟进,助、祝你成功!
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-7-29 20:31
引用: 通宵敲代码 发表于 2016-7-29 20:09
一个不切实际的毕业设计!

咬着牙 做吧~
点赞  2016-8-1 10:12
引用: 5525 发表于 2016-7-29 20:31
楼主,真心感兴趣做这个,肯定会有好东西出来
ARM公司开始也就7个人。
你可以放开,谈谈你的想 ...

多谢你的鼓励,我现在在理论方面,像51的111条指令我都基本上学习完了,流水也只懂一点。。。
点赞  2016-8-1 10:15
51 的流水线,还比较好弄,一个指令周期占10还是12个clk的

自己做的话,选几个代表的指令,先把架构写出来,在添加,丰满
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-8-1 21:05
引用: 5525 发表于 2016-8-1 21:05
51 的流水线,还比较好弄,一个指令周期占10还是12个clk的

自己做的话,选几个代表的指令,先把架构写出 ...

多谢大大指点~
点赞  2016-8-2 16:31
看这本书吧:兼容ARM9的软核处理器设计:基于FPGA。虽然说的是ARM9的内核用Verilog实现,但是原理是一样的。
点赞  2016-8-5 17:15
引用: youxiliu39 发表于 2016-8-5 17:15
看这本书吧:兼容ARM9的软核处理器设计:基于FPGA。虽然说的是ARM9的内核用Verilog实现,但是原理是一样的 ...

上来就搞ARM不是不可以。
只要尝试和喜欢就行。
ARM的部分核,网上有开源的代码的。
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-8-5 21:36
引用: youxiliu39 发表于 2016-8-5 17:15
看这本书吧:兼容ARM9的软核处理器设计:基于FPGA。虽然说的是ARM9的内核用Verilog实现,但是原理是一样的 ...

朋友,你有这本书的电子版吗?
点赞  2016-8-6 11:45
引用: 5525 发表于 2016-8-5 21:36
上来就搞ARM不是不可以。
只要尝试和喜欢就行。
ARM的部分核,网上有开源的代码的。

感觉ARM的要难很多啊
点赞  2016-8-6 11:46
东西不是一下子,搞完的。
也不是说向书上说的 设计 -- 开发 -- 测试 -- 结束

的 先弄个小的 走下上面的流程
在弄后面的。
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-8-6 13:29
引用: 5525 发表于 2016-8-6 13:29
东西不是一下子,搞完的。
也不是说向书上说的 设计 -- 开发 -- 测试 -- 结束

的 先弄个小的 走下上面 ...

我还是先做51的,慢慢来吧~
点赞  2016-8-6 15:33
没有创意
点赞  2016-8-6 21:02
引用: 5525 发表于 2016-8-1 21:05
51 的流水线,还比较好弄,一个指令周期占10还是12个clk的

自己做的话,选几个代表的指令,先把架构写出 ...

问你个问题,MCS-51指令集里乘除法是4个机器周期,如果我想用2级的流水线实现,乘除法指令是不是也变成了2个机器周期?
点赞  2016-8-20 20:43
引用: yaphetszyj 发表于 2016-8-20 20:43
问你个问题,MCS-51指令集里乘除法是4个机器周期,如果我想用2级的流水线实现,乘除法指令是不是也变成了 ...

为了避免增加复杂度,前期项目收缩。
初期不要做这种改进吧

因为如果要考虑, a x b x c 的情况,这个就算你改进了还是要等

如果要考虑, a x b x c x d 的情况,a x b, c x d, 最后结合在x 可以
这个你需要用两路 乘法器 并行,先分后和,而且要改进编译器软件。
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-8-20 21:01
引用: 5525 发表于 2016-8-20 21:01 为了避免增加复杂度,前期项目收缩。 初期不要做这种改进吧 因为如果要考虑, a x b x c 的情况,这 ...
也就是说,不管用几级流水线,51的乘除法都用4个机器周期来实现,是吧 其实我是想问,怎么用两级流水线来实现一个4机器周期的指令,你有没有什么建议? 本帖最后由 yaphetszyj 于 2016-8-20 21:15 编辑
点赞  2016-8-20 21:06
引用: yaphetszyj 发表于 2016-8-20 21:06
也就是说,不管用几级流水线,51的乘除法都用4个机器周期来实现,是吧
其实我是想问,怎么用两级流水线 ...

这个不需要复杂的流水线啊,生成一个乘法器,一般2个CLK3个CLK即可出结果,
你直接给a b, 等2 到 3 个周期,出结果,计算下一个即可。

如果,你可以简单的画个图,这样更便于沟通。
说不定哪天你就收货好点子了。

MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-8-20 21:22
引用: 5525 发表于 2016-8-20 21:22
这个不需要复杂的流水线啊,生成一个乘法器,一般2个CLK3个CLK即可出结果,
你直接给a b, 等2 到 3 个周 ...

我现在的想法就是,做一个两级流水线,取指令和指令两部分,执行包括译码、准备操作数、alu和写回。但是我现在遇到的问题 是怎么设计流水线的时钟 才能让所有的指令能够合理的运行,表达的很凌乱~~
点赞  2016-8-20 21:30
楼主,

这里的时钟只有1个,都是同期设计

时序的话,做个计数器,0到处理时间-1,
然后生成的pulse,延时几级,
这样你的取指令,执行,写回就都有了
MicroPython中文社区https://micropython.org.cn/forum/  
点赞  2016-8-21 12:58
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复