计算机系统要素-第三章 时序逻辑

1 本章介绍时钟和触发器,构建记忆单元。触发器是具有记忆功能的最小记忆单元,能够存储一个bit位。
2 设计计算机时钟时,时钟周期的长度要比1个比特在计算机两个物理距离最长的芯片之间的传输时间稍长。
3 D触发器
4 寄存器
1) 1比特位寄存器
/**
* 1-bit register:
* If load[t] == 1 then out[t+1] = in[t]
* else out does not change (out[t+1] = out[t])
*/

CHIP Bit {
IN in, load;
OUT out;

PARTS:
Mux(a=out1,b=in,sel=load,out=out2);
DFF(in=out2,out=out1);
And(a=out1,b=true,out=out);
}
2) Register
/**
* 16-bit register:
* If load[t] == 1 then out[t+1] = in[t]
* else out does not change
*/

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

PARTS:
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]);
}
3) RAM8

CHIP RAM8 {
IN in[16], load, address[3];
OUT out[16];

PARTS:
DMux8Way(in=load,sel=address,a=a1,b=b1,c=c1,d=d1,e=e1,f=f1,g=g1,h=h1);
Register(in=in,load=a1,out=out1);
Register(in=in,load=b1,out=out2);
Register(in=in,load=c1,out=out3);
Register(in=in,load=d1,out=out4);
Register(in=in,load=e1,out=out5);
Register(in=in,load=f1,out=out6);
Register(in=in,load=g1,out=out7);
Register(in=in,load=h1,out=out8);
Mux8Way16(a=out1,b=out2,c=out3,d=out4,e=out5,f=out6,g=out7,h=out8,sel=address,out=out);
}
4) RAM64
CHIP RAM64 {
IN in[16], load, address[6];
OUT out[16];

PARTS:
DMux8Way(in=load,sel=address[3..5],a=a1,b=b1,c=c1,d=d1,e=e1,f=f1,g=g1,h=h1);
RAM8(in=in,load=a1,address=address[0..2],out=out1);
RAM8(in=in,load=b1,address=address[0..2],out=out2);
RAM8(in=in,load=c1,address=address[0..2],out=out3);
RAM8(in=in,load=d1,address=address[0..2],out=out4);
RAM8(in=in,load=e1,address=address[0..2],out=out5);
RAM8(in=in,load=f1,address=address[0..2],out=out6);
RAM8(in=in,load=g1,address=address[0..2],out=out7);
RAM8(in=in,load=h1,address=address[0..2],out=out8);
Mux8Way16(a=out1,b=out2,c=out3,d=out4,e=out5,f=out6,g=out7,h=out8,sel=address[3..5],out=out);
}
5) PC计数器
/**
* A 16-bit counter with load and reset control bits.
* if (reset[t] == 1) out[t+1] = 0
* else if (load[t] == 1) out[t+1] = in[t]
* else if (inc[t] == 1) out[t+1] = out[t] + 1 (integer addition)
* else out[t+1] = out[t]
*/

CHIP PC {
IN in[16],load,inc,reset;
OUT out[16];

PARTS:
Mux16(a=back,b=in,sel=load,out=in1);
Mux16(a=in1,b=false,sel=reset,out=in2);
Register(in=in2,load=true,out=out1);
And16(a=out1,b=true,out=out);
Inc16(in=out1,out=out2);
Mux16(a=out1,b=out2,sel=inc,out=back);
}

时间: 2024-08-06 20:03:31

计算机系统要素-第三章 时序逻辑的相关文章

《深入理解计算机系统(第三版)》第二章 信息的表示和处理

<深入理解计算机系统(第三版)>第二章 信息的表示和处理 ??计算机本身是由处理器和存储器子通过系统组成.在核心部分,我们需要方法来表示基本数据类型,比如整数和实数运算的近似值.然后,我们考虑机器级指令如何操作这样的数据,以及编译器又如何将C程序翻译成这样的指令.接下来,研究几种实现处理器的方法,帮助我们更好的了解硬件资源如何被用来执行指令.理解了编译器和机器级代码,我们就能了解如何通过编写C程序以及编译它们来最大化程序的性能.本章主要使我了解了如何表示和执行应用程序,通过一些技巧,来写出安全

《深入理解计算机系统》第四章 处理器体系结构

<深入理解计算机系统>第四章 处理器体系结构 我们看到的计算机系统都只限于机器语言程序级.处理器执行一系列指令每天指令执行某个简单操作,它们被编码为由一个或多个字节序列组成的二进制格式.在本章的学习中,我们主要了解ISA抽象的作用以及了解流水线和实现方式. 4.1 Y86-64指令集体系结构 字节序列转换为Y86-64指令的方法总结如下: 通过代码部分确定指令长度,从而以指令为单位划分字节序列: 通过功能部分确定具体的指令: 通过寄存器指示符字节确定指令中涉及的寄存器: 通过转换数值部分以小段

《深入了解计算机系统》第七章读书笔记

<深入了解计算机系统>第七章读书笔记 第一部分:链接 链接定义:链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储并执行. 第二部分:目标文件 目标文件:目标文件用以存放目标代码和由编译器或汇编器生成的相关数据的计算机文件格式称为目标文件格式. 目标文件格式有许多不同的种类.最初每种类型计算机都拥有自身独特的格式,但随着Unix和其他可移植操作系统的问世,人们定义了例如COFF和ELF这些格式,并在不同的系统上使用它们.通常,链接器的输入和输出使

当代码遇到数理逻辑——面向对象设计与构造第三章总结

在面向对象课程中的第三章,我尝试了基于JML语言的规格化设计,按照AppRunner中的接口文件实现了Path类和PathContainer, Graph, RailWaySystem迭代类.JML语言是一种规格化语言,完全建立于数理逻辑上,既能够为开发者实现类与方法时提供准确的功能参考,也能够在特定工具支持下充当assert的功能和辅助自动生成测试样例. 本篇博客将从以下几方面对第三章进行总结: JML的基本语法与工具链 基于JmlUnitNg的自动测试方法尝试 三次作业架构 程序Bug分析

第三章、社会理解力与友谊

目录 第三章.社会理解力与友谊 -.独处 二.评估社会互动技能 三.希望拥有朋友的动机 (一)对自然环境产生兴趣 (二)想和其他孩子一起玩 (三)建立最初的友谊 (四)寻找合适的伴侣 (五)成为终身伴侣 四.友谊的重要性 五.鼓励建立友谊的策略 友谊发展的第一阶段--3~6岁 (一)适合第一阶段的方案 友谊发展的第二阶段--6~9岁 (二)适合第二阶段的方案 友谊发展的第三阶段--9~13岁 (三)适合第三阶段的方案 友谊发展的第四阶段--13岁~成人 (四)适合第四阶段的方案 六.社会理解力发

《UML精粹》 第四章 时序图

第四章 时序图 一般来说,我们会在一张时序图中画出某个情节的相关行为,图种会秀出这个使用案例(use case)里面可能出现的一些对象,以及在对象间传送的信息. 本章将通过一个简单情节,做时序图各方面的相关讨论.假设我们现在有一份订单,并且准备调用它的一个命令,算出这份订单的价格.为了达到这个目的,订单需要产看它里面所拥有的一些订单明细.决定它们的价格,价格决定方式是以订单明细中所包含产品之定价规则为基础决定的.对所有订单明细做完上述动作之后,接下来订单要算出整个折扣,这时候它是以跟客户绑在一起

Android艺术开发探索第三章————View的事件体系(下)

Android艺术开发探索第三章----View的事件体系(下) 在这里就能学习到很多,主要还是对View的事件分发做一个体系的了解 一.View的事件分发 上篇大致的说了一下View的基础知识和滑动,现在我们再来聊聊一个比较核心的知识点,那就是事件分发了,而且他还是一个难点,我们更加应该掌握,View的滑动冲突一直都是很苦恼的,这里,我们就来一起探索一下 1.点击事件的传递规则 我们分析的点击事件可不是View.OnClickListener,而是我们MotionEvent,即点击事件,关于M

JavaScript高级程序设计(第3版)第三章读书笔记

第三章  基本概念 ECMAScript中的一切(变量.函数名和操作符)都区分大小写. 标识符是指变量.函数.属性的名字,或者函数的参数. 标识符的组成规则是:第一个字符必须是一个字母.下划线(_)或一个美元符号($):其他字符可以是字母.下划线.美元符号或数字. ECMAScript标识符采用驼峰大小写格式. ECMAScript注释包括单行注释(//)和块级注释(/*  *  */). ECMAScript 5引入了严格模式的概念,严格模式是为JavaScript定义了一种不同的解析与执行模

《大道至简》第三章读后感

在前面,我阅读了大道至简的前两章,今天我又阅读了第三章,通过阅读第三章,我对于编程和做人等方面又有了进一步的理解和认识. 第三章中主要讲的是团队以及团队的领导者.作者指出对于一个团队而言最少以三个人为规模.三个人便有了团队的一些基本特性:主从,监督和责任.一个人的开发可以成功,这取决于个人的努力.两人的小组如果能相互支撑可以获得成功的,而三个人呢就得选了领导不是要程咬金一样的牛人而是要李离一样的牛人,项目完成不了切脑袋的是倒不必做递交辞呈的勇气总是要有的.当然并不是说项目没有做成功就一定要递交辞