yaphetszyj 发表于 2016-7-29 15:35

用Verilog实现51单片机内核

本帖最后由 yaphetszyj 于 2016-8-1 10:19 编辑

请教大家,用Verilog实现51单片机内核的具体步骤呢,老师给的方向,不太会,希望大家帮帮我~

目前我已将51单片机的111条指令都学完了,并将这些指令按照机器周期数、字节数分类了,但在具体实现的时候,不知道从哪里下手,比如我想做一个2级流水的内核,从哪里下手比较好?再就是一些模块,我该怎样分呢?大神们,快来吧,我需要你们!!

通宵敲代码 发表于 2016-7-29 20:09

{:1_98:}一个不切实际的毕业设计!

5525 发表于 2016-7-29 20:31

楼主,真心感兴趣做这个,肯定会有好东西出来{:1_103:}
ARM公司开始也就7个人。
你可以放开,谈谈你的想法,这样大家好跟进,助、祝你成功!{:1_106:}

yaphetszyj 发表于 2016-8-1 10:12

通宵敲代码 发表于 2016-7-29 20:09
一个不切实际的毕业设计!

咬着牙 做吧~

yaphetszyj 发表于 2016-8-1 10:15

5525 发表于 2016-7-29 20:31
楼主,真心感兴趣做这个,肯定会有好东西出来
ARM公司开始也就7个人。
你可以放开,谈谈你的想 ...

多谢你的鼓励,我现在在理论方面,像51的111条指令我都基本上学习完了,流水也只懂一点。。。

5525 发表于 2016-8-1 21:05

51 的流水线,还比较好弄,一个指令周期占10还是12个clk的

自己做的话,选几个代表的指令,先把架构写出来,在添加,丰满{:1_103:}

yaphetszyj 发表于 2016-8-2 16:31

<div class='shownolgin' data-isdigest='no'>5525 发表于 2016-8-1 21:05
51 的流水线,还比较好弄,一个指令周期占10还是12个clk的

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

多谢大大指点~:)</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

youxiliu39 发表于 2016-8-5 17:15

<div class='shownolgin' data-isdigest='no'>看这本书吧:兼容ARM9的软核处理器设计:基于FPGA。虽然说的是ARM9的内核用Verilog实现,但是原理是一样的。</div><script>showreplylogin();</script>

5525 发表于 2016-8-5 21:36

<div class='shownolgin' data-isdigest='no'>youxiliu39 发表于 2016-8-5 17:15
看这本书吧:兼容ARM9的软核处理器设计:基于FPGA。虽然说的是ARM9的内核用Verilog实现,但是原理是一样的 ...

上来就搞ARM不是不可以。
只要尝试和喜欢就行。
ARM的部分核,网上有开源的代码的。</div><script>showreplylogin();</script>

yaphetszyj 发表于 2016-8-6 11:45

<div class='shownolgin' data-isdigest='no'>youxiliu39 发表于 2016-8-5 17:15
看这本书吧:兼容ARM9的软核处理器设计:基于FPGA。虽然说的是ARM9的内核用Verilog实现,但是原理是一样的 ...

朋友,你有这本书的电子版吗?:handshake</div><script>showreplylogin();</script>

yaphetszyj 发表于 2016-8-6 11:46

<div class='shownolgin' data-isdigest='no'>5525 发表于 2016-8-5 21:36
上来就搞ARM不是不可以。
只要尝试和喜欢就行。
ARM的部分核,网上有开源的代码的。

感觉ARM的要难很多啊{:1_133:}</div><script>showreplylogin();</script>

5525 发表于 2016-8-6 13:29

<div class='shownolgin' data-isdigest='no'>东西不是一下子,搞完的。
也不是说向书上说的 设计 -- 开发 -- 测试 -- 结束

的 先弄个小的 走下上面的流程
在弄后面的。</div><script>showreplylogin();</script>

yaphetszyj 发表于 2016-8-6 15:33

<div class='shownolgin' data-isdigest='no'>5525 发表于 2016-8-6 13:29
东西不是一下子,搞完的。
也不是说向书上说的 设计 -- 开发 -- 测试 -- 结束

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

我还是先做51的,慢慢来吧~:loveliness:</div><script>showreplylogin();</script>

lfshv007 发表于 2016-8-6 21:02

<div class='shownolgin' data-isdigest='no'>没有创意
</div><script>showreplylogin();</script>

yaphetszyj 发表于 2016-8-20 20:43

<div class='shownolgin' data-isdigest='no'>5525 发表于 2016-8-1 21:05
51 的流水线,还比较好弄,一个指令周期占10还是12个clk的

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

问你个问题,MCS-51指令集里乘除法是4个机器周期,如果我想用2级的流水线实现,乘除法指令是不是也变成了2个机器周期?</div><script>showreplylogin();</script>

5525 发表于 2016-8-20 21:01

<div class='shownolgin' data-isdigest='no'>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 可以
这个你需要用两路 乘法器 并行,先分后和,而且要改进编译器软件。
</div><script>showreplylogin();</script>

yaphetszyj 发表于 2016-8-20 21:06

<div class='shownolgin' data-isdigest='no'> 本帖最后由 yaphetszyj 于 2016-8-20 21:15 编辑

5525 发表于 2016-8-20 21:01
为了避免增加复杂度,前期项目收缩。
初期不要做这种改进吧

因为如果要考虑, a x b x c 的情况,这 ...
也就是说,不管用几级流水线,51的乘除法都用4个机器周期来实现,是吧
其实我是想问,怎么用两级流水线来实现一个4机器周期的指令,你有没有什么建议?
</div><script>showreplylogin();</script>

5525 发表于 2016-8-20 21:22

<div class='shownolgin' data-isdigest='no'>yaphetszyj 发表于 2016-8-20 21:06
也就是说,不管用几级流水线,51的乘除法都用4个机器周期来实现,是吧
其实我是想问,怎么用两级流水线 ...

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

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

</div><script>showreplylogin();</script>

yaphetszyj 发表于 2016-8-20 21:30

<div class='shownolgin' data-isdigest='no'>5525 发表于 2016-8-20 21:22
这个不需要复杂的流水线啊,生成一个乘法器,一般2个CLK3个CLK即可出结果,
你直接给a b, 等2 到 3 个周 ...

我现在的想法就是,做一个两级流水线,取指令和指令两部分,执行包括译码、准备操作数、alu和写回。但是我现在遇到的问题 是怎么设计流水线的时钟 才能让所有的指令能够合理的运行,表达的很凌乱~~</div><script>showreplylogin();</script>

5525 发表于 2016-8-21 12:58

<div class='shownolgin' data-isdigest='no'>楼主,

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

时序的话,做个计数器,0到处理时间-1,
然后生成的pulse,延时几级,
这样你的取指令,执行,写回就都有了</div><script>showreplylogin();</script>
页: [1] 2
查看完整版本: 用Verilog实现51单片机内核