【计算机系统要素】使用D触发器实现寄存器、内存和计数器

本文是笔者拜读《计算机系统要素》第3章(时序逻辑)的实践项目。
本文的HDL程序所调用的组合逻辑模块来自前几篇博客。

D触发器

在这里插入图片描述
在这里插入图片描述
DFF的输出被赋予了上个时钟周期的输入,所有的DFF门都连接同一个主时钟,所有时序芯片都在主时钟频率的协调下共同工作。

Nand门一样,DFF门在计算机体系中处于非常底层的位置,计算机中的所有时序芯片(寄存器、内存、计数器)都基于大量的DFF门。

DFF的物理实现是个复杂的任务,它使用反馈电路(仅基于Nand门)连接几个基本的逻辑门。

寄存器

1比特位寄存器

在这里插入图片描述
如果希望寄存器开始存储一个新值,可以把这个值置于in输入口,然后将load位设为1;如果希望寄存器一直存储它的内部值直到新的指令到来,就将load设置为0
在这里插入图片描述
在这里插入图片描述

CHIP Bit {
   
    IN in, load; // t
    OUT out; // t+1

    PARTS:
    // Put your code here:
    Mux(a = o1, b = in, sel = load, out = o2);
    DFF(in = o2, out = out);
    DFF(in = o2, out = o1);
}

内部接线o1的默认初值是false,即低电平。
输入是t时刻的,输出是t+1时刻的,该输出又是t+2时刻输出的一部分。

多比特位寄存器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
读:要读取寄存器的内容,只需获取它的输出。
写:要将新数据d写入寄存器,只需将d置于in输入管脚,并将load输入管脚的值设为1,这样,在下一个时钟周期,寄存器被赋予新的数据值,输出变成了d

CHIP Register {
   
    IN in[16], load;
    OUT out[16];

    PARTS:
    // Put your code here:
    Bit(in = in[0], load = load, out = out[0]);
    Bit(in = in[1], load = load, out = out[1]);
    Bit(in = in[2], load = load, out = out[2]);
    Bit(in = in[3], load = load, out = out[3]);
    Bit(in = in[4], load = load, out = out[4]);
    Bit(in = in[5], load = load, out = out[5]);
    Bit(in = in[6], load = load, out = out[6]);
    Bit(in = in[7], load = load, out = out[7]);
    Bit(in = in[8], load = load, out = out[8]);
    Bit(in = in[9], load = load, out = out[9]);
    Bit(in = in[10], load = load, out = out[10]);
    Bit(in = in[11], load = load, out = out[11]);
    Bit(in = in[12], load = load, out = out[12]);
    Bit(in = in[13], load = load, out = out[13]);
    Bit(in = in[14], load = load, out = out[14]);
    Bit(in = in[15], load = load, out = out[15]);
}
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值