前言:
这篇日志是我记录自己做CPU时候的工作进度以及思考,灵感,问题,里面记录了很多的BUG,如果遇到了一些BUG可以来这篇日志里面查找
日志的后半部分我认为是比较有营养的
这篇日志非常的长,原版我是记录在一个WORD文档里面的,这个文档可以在我发布的CPU工程文件里面找到,文档里面文字有,加粗,字体颜色,更方便阅读
完整的CPU工程文件可以在下方链接下载.无需花费积分哦
//download.csdn.net/download/_/
标题关于控制信号的整理可以查看我的另一篇博客
https://blog.csdn.net/_/article/details/?utm_source=app
12/11修复了PC寄存器的问题,就是输入一个地址后只是当前那个周期输出这个addr,后续又变回来原先的addr
Ram的性质是获取上升沿前一瞬间的控制信号
取指令联合调试完成
Ram正常在上升沿读出,IR正常在下降沿写入
另外,我决定直接把SM加个反相器就连接到LD_IR上面,这样子简单不易错
对未来的提醒:目前,c,z尚未用到,但是这两个口决定能否输出jmp和jz这二个指令,或许…这两个口可以加在指令译码器?
修正了控制信号产生逻辑的一个重大bug之后,我成功让取指令周期自动跑起来了

但是好像有点不对,因为我预期的ram是”上升沿读出”的,但是很明显,现在的ram是”下降沿就输出了数据,并且保持一个周期”这不是我想要的(虽然似乎没有什么问题)
经过反复验证,我认为是ram元件本身出了问题
但是我又去我原本的ram那里进行了ram单个元件的测试,发现是有上升沿写入的性质的,但是到了我的cpu里面就失去了这个性质…
2019-12-14开始制作mov指令
先做MOVA
MOVA R1,R2是三个寄存器之间的互相移动,把数据从R1移动到R2
执行周期与此指令相关的控制信号
移位逻辑
F-BUS 1
FL-BUG 0
FR-BUS 0
ALU
S[3…0] 1111
M 0
通用寄存器组
RAA 不固定
RWBA 不固定
/WE 0
{BUG}发现了控制信号产生逻辑里面的一个bug,
RAA <= IR(1 downto 0);
RWBA <= IR(3 downto 2);
之前我一直以为RAA是[3 downto 2]
啊啊啊啊,这个bug不仅在控制信号产生逻辑里面有,在指令译码器里面也有啊啊啊啊啊,我死了,稍后再做修改
我猛然发现,原来RAM的CS和CLK不是一个口!!!

我在增加了两个骚气的与门之后RAM能在timing仿真下按照我的意愿工作了
为什么我一把指令译码器和控制信号产生逻辑连接在一起,就tm的连取指令的执行都错误了!!!我仔细排查了一下,问题出似乎在MADD那里,因为selector输出”ZZZZZZZZ",所以我又排查了MADD的控制信号产生逻辑,似乎没问题…那么…就一定是指令译码器有问题了

我的猜测被证实了,果然’是指令译码器出现了问题
在我de掉指令译码器的错误之后,”取指令”的操作变得更加诡异了
但是我似乎发现了什么
{BUG}*

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/57919.html