一、设计思想
1、本设计采用微代码控制单元。
2、设计分成几个部分:状态信号的产生、加法器、外部存储器和各功能模块。
3、设计的输入信号为:时钟输入、复位信号。
4、为了验证仿真结果的正确性,写了一个外部存储器的代码。但是只写了 16个存储单元。
5、NNend 相当于一个结果为负时的跳转信号。它用来检测两个操作数相减的结果,若为负数,则它被置 1,并跳转到目标地址中。
6、本设计一共有三个时钟,clk、PH1、PH2。Clk 的周期是其它两个时钟信号的两倍。Clk 信号作为状态信号的时钟。PH2 作为各个寄存器的时钟信号。PH1 作为控制外部存储器读写的时钟。
7、加法器采用组合逻辑的方法进行设计。对 A、B 两条总线的操作不受时钟控制 。寄存器有 PC、R、Z、N、MDR、MAR。为这几个寄存器写数据均在 PH2 的上升沿。对外部存储器的读写操作在 PH1 的上升沿。
8、外部存储器中的数据分别为
“00000000”, “00001001”, “00001010”,“00000010”, “00001011”, “00000111”,
“00001001”, “00000011”, “00000000”, “00001001”, “00001100”, “00001010”,
“00000011”, “00000011”, “00000011”,“00000011”
仿真结果
1、在状态 0,PCOUT 有效,PC 的值 00000001 即刻输出到总线 BUS_A 上,并被传输到加法器的一个输入端,此时 COMP 为 0,故加法器的另一端为 0,且 cin 为 0 ,加法器的输出依然为 PC 的值,并被送到 BUS_B 上,然后在 PH2 的上升沿,MARIN有效,PC 的值写进 MAR,并在 PH1 的上升沿把 00000001 中的第一个操作数的地址 00001001 写进 MDR 中。
2、在状态 1,由于 MDROUT 控制信号有效,第一个操作数的地址 00001001 被送到总线 BUS_A 上,由于 MARIN 有效,故在时钟 PH2 的上升沿,第一个操作数的地址送入地址寄存器 MAR 中。在时钟 PH1 的上升沿,由于 rd1 信号为 1,故存储器输出的值为第一个操作数 00001011。
3、在状态 2,由于 MDROUT 控制信号有效,第一个操作数 00001011 被送到总线BUS_A 上,在时钟 PH2 的上升沿,由于 RIN 信号有效,故第一个操作数被送进寄存器 R 中。
4、在状态 3,由于 PCOUT 为 1,故 PC 的值被送到总线 BUS_A 上,由于 COMP 为 0而 CIN 为 1,故 PC 加 1 后送到总线 BUS_B 上;在时钟 PH2 的上升沿,由于 MARIN有效,故 PC+1 即 00000010 被送入地址寄存器 MAR。在时钟 PH1 的上升沿,由于rd1 信号有效,故存储器输出的值为第二个操作数的地址 00001010.
5、在状态 4,由于 MDROUT 为 1,第二个操作数的地址被送到总线 BUS_A 上,在时钟 PH2 的上升沿,由于 MARIN 信号有效,故第二个操作数的地址被 00001010送入地址寄存器 MAR 中。在时钟 PH1 的上升沿,由于 rd1 信号有效,故存储器的输出值为第二个操作数 00001100.
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !