程序错误通常包括:
语法错误
逻辑错误(或语义错误)
运行异常:程序设计对程序运行环境考虑不周而造成的程序运行错误
对于x/y,给y输入了0
文件打开错误
由内存空间不足导致的内存访问错误
可以预料,但无法避免
保证程序的鲁棒性(robustness),需要加一些对可能出现的异常进行预见性处理
异常处理策略
就地处理
异地处理
就地处理常用:调用exit或abort...
I/O类库基本类ios
istream
—ifstream
—istringstream
ostream
—ofstream
—ostringstream
面向控制台的I/O
cin(istream的对象)
cout(ostream的对象)
cerr和clog(ostream的对象):对应特殊信息(如错误信息),cerr不带缓冲,clog带...
指令集中涉及的运算
涉及的定点数运算
算术运算
带符号整数
无符号整数
逻辑运算
逻辑操作
移位操作
涉及的浮点数运算
所有运算都可由ALU或加法器+移位器+多路选择器+控制逻辑实现
1.串行进位加法器
n位串行进位加法器的延迟
Cn:2nC_n:2nCn:2n
最后一级合数2n+12n+12n+1(n=1、2的话还是6级)
2.并行进位加法器先行进位...
双目操作符重载
单目操作符重载
操作符++和–的重载
实现途径
operator #
“#”代表任意可重载的操作符
1234567891011121314151617181920212223242526272829//成员函数class Complex{ public: Complex operator + (const Complex& x) const ...
1.可编程逻辑器件(PLD)
2.存储器阵列
寄存器存储少量数据,速度快
存储器阵列用来存储大量数据,速度比寄存器慢
存储器阵列中每位数据对应一个记忆单元(cell),成为存储元
只读寄存器(ROM)非易失性存储器,电源断电,存储数据也不会消失
随机存取存储器(RAM)易失性存储器,一旦电源断电,RAM存储的数据就消失
静态RAM:保持电源,存储单元中存放数据就保持不变
动态RAM...
1.计数器
一般从0开始计数,在达到最大计数值时输出一次计数完成信号,并重新开始计数
异步行波加法计数器
用T触发器实现(假设上升沿触发),激励输入串行传递,每个时钟周期传递一次。
当编码为1111时,下个时钟到达时,经过最长的延时,又回到0000
同步并行加法计数器
所有触发器共用同一个时钟信号
在时钟信号边沿到达后,所有触发器的输出同时发生变化
带使能端EN的T触发器,上升沿...
1.同步时序逻辑设计步骤
2.状态图/状态表设计例:检测一连串0/1中是否出现”101”
3.状态化简和状态编码状态化简
状态编码
4.电路设计和分析电路设计
电路分析(未用状态分析)
电路分析(定时分析)
1.双稳态元件
用于存储1位二进制数据,有两个互补的输出状态
状态1:置位(Set)状态,表示存储逻辑“1”
状态0:复位(Reset)状态,表示存储逻辑“0”
双稳态元件的简单实现
串联两个反相器,则反相器的输出状态不同,且保持稳定
双稳态元件无法改变电路状态
用1个或多个输入信号能驱动双稳态元件进入稳定状态,这些输入信号称为激励信号或激励输入
根据触发方式不同,可以实...
map容器简介
map是关联容器,存储键值对(key-value),并根据键值自动排序(默认升序)
底层实现是红黑树
每个元素是一个pair,由key和value组成
不允许出现相同的key,若插入相同key的新值,则旧值会被覆盖
#include<map>
map/multimap构造map<T1, T2> mapTT;
multimap<T1, ...
时序逻辑:输出结果不仅取决于当前时刻的输入值,还取决于电路过去时刻的行为(当前状态、现态、旧状态)
电路中有存储元件,存储逻辑信号(0、1)的值
电路输入值发生变化时,新的输入值可能使得电路保持当前状态,也可能使得电路状态发生改变,进入新的状态。
1.时序逻辑与有限状态机
有限状态机是一种刻画状态以及状态转换的理论工具
通常用状态图描述有限状态机
状态:用包含状态符号的圆圈表示
状...