目录
最近关注了一个开源项目,是一个被命名为Cμ4的四位CPU。项目的开源地址
本文章整理了该项目使用数电芯片。重新回顾一下部分数电知识。
ROM:AT28C64
该项目中使用的ROM是ATMEL的AT28C64,PDIP封装有28个引脚。该ROM操作方便,可以像操作静态RAM一样去操作它。这颗ROM是可以做到8K * 8bit的,作者将A12接地,使得这颗ROM在这个项目中只有4K的寻址范围,一共拥有4KB的ROM。
RAM:P2114AL
这是个老物件,1024 * 4bit的静态RAM,原型应该是intel公司的M2114A。10根地址线和4根数据线。
PLD:ATF16V8B
一开始不理解为什么自制CPU需要可编程逻辑门,不应该全使用数电芯片吗?随着对项目的理解,我发现74系列芯片实现的是运算部分,机器码解释是使用PLD来实现的,刷入固件的PLD部署了指令寄存器和解码器。
ATF16V8B是ATMEL的一款高性能电可擦除可编程逻辑门器件。可输入引脚有8个,IO有8个。
74181/74LS181
算术逻辑单元(ALU),是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分。这就是这颗CPU的心脏了。
74181可以实现两个4bit数的运算,可以提供算术运算和逻辑运算两种模式。A0-A3是第一个数,B0-B3是第二个数。S0-S3是功能选择,一共可以组合出16种功能。M用于选择算术运算和逻辑运算两种之一。Cn是进位输入,一般用于多片级联,在只有一片181时也用于功能选择。F0-F3是结果输出。
74161/74LS161/74HC161
二进制同步计数器。用于内存寻址时,先通过置数,设置初值,随后每个时钟上升沿后,计数器的输出值都会加1。当然还可以用于给寄存器赋初值等操作。
74151/74LS151/74HC151
八选一数据选择器。有ABC三个引脚选择D0-D7之一输出,输出原值和取反值。
74157/74LS157/74HC157
与上面的151一样,也是选择器,其中集成有4个两路选择器,仅通过一个引脚来进行选择。
7414/74LS14/74HC14
六路施密特触发器。集成了6个施密特触发器,逻辑上和非门类似。实际使用过程中,是有两个阈值来控制输出电平是高还是低。当输出为低电平时,需要输入大于正向阈值电压,输出才会变为高电平。反之,当输出需要回到低电平时,输入也要小于负向阈值电压。
7474/74LS74/74HC74
集成两个上升沿D触发器。作者用一个来驱动Q灯。当PR、CLR都为高时,当时钟上升沿到来时,Q的状态与D的状态同步。
74125/74LS125/74HC125
74125集成了4个三态门。在项目中,作者使用的是P8216,有8个三态门,将所有DO悬空设置,相当于只有DI会输出到DB,使用一个CS片选脚,来控制数据是否输入内存。
74138/74LS138/74HC138
著名的三八译码器,将输入的三个二进制信号,翻译成八位的输出信号,一一对应,每次仅有一位与其他位不同。
74244/74LS244/74HC244
3态8位缓冲器。作者通过选取使能,使不同的按键输入可以进入总线,写入内存。
7447/74LS47/74HC47
7段数码管驱动器。通过输入BCD(8421)码,经过解码,直接驱动7段式数码管。
下面是BCD码对应的数码管显示形式。
74393/74LS393/74HC393
74LS393包括两个独立的四位二进制计数器,每个计数器具有清除和时钟输入。作者在本项目中,使用两个393从一个32.768kHz的晶振上做了一个1Hz的时钟输出。