BUAA计组p0_Logisim_复习tips
p0 Logisim
课下测试
1. 使能与复位
使能输入:决定 是否在时钟沿载入数据
- Suggested:由EN作为MUX的sel选择,输入D与原来状态Q被选择 TRUE则传递输入值D FALSE则循环Q的原来状态。
- 使用与门联系EN与CLK,时钟被门控。
当 CLK = 1 时,若EN发生改变,触发器就会出现一个时钟毛刺,在不正确的时间进行转换。
复位输入:决定 是否载入数据 及将输出Q复位为0
!同步复位与异步复位
同步复位: 只在CLK上升沿进行复位
- 具体操作:将RESET符号扩展并取反再与输入数据通过与门,作为触发器的输入端;
- 如果为同步复位,且想要实现控制复位至非0的状态:
可以使用reset作为MUX的选择信号,输入D与原来状态Q被选择 TRUE则传递想要复位的状态 FALSE则传递输入D
// 该情况类似于使能输入的思想
异步复位: 只要RESET = TRUE就可以进行复位,而与CLK无关;此时触发器忽略输入并将输出Q复位为0
- 具体操作:将reset信号连接在clear端口
或许可以通过reset来选择输出,从而改变当前寄存器输出值,但实际并不能停止载入数据
2. 时序电路
定义电路:电路的输入、输出端、功能规范和时序规范
- 同步时序电路需要满足的条件:
- 每一个电路元件或是寄存器或是组合电路
- 至少有一个电路元件是寄存器
- 每个环路至少包含一个寄存器
寄存器包含系统的状态,这些状态仅仅在时钟沿到达时发生改变,即状态同步于时钟信号
3. 电路模块的设计流程
4. CRC校验码的理解
- CRC校验码即为n位原码数据帧+k-1位校验码,k为除数位数
- 电路设计分为两个部分,核心为模二除法模块
- 模二除法模块输入为当前处理的高四位数值,非第一组时为上一组三位余数加下一个最高位,为保证后k-1位模二除法时需要在n位原码数据帧后补充k-1位0;输出为三位余数。
- 整合模块主要为输入输出的调整,以及重点为运算次数=原码数据帧位数。
5. 有限状态机 —— Moore型和Mealy型
设计流程:状态转移、状态存储、输出
以上三个模块是对有限状态机进行抽象后的三个主要方面。
其中,状态转移模块和输出模块内是纯组合逻辑,不涉及时序逻辑。而状态存储模块则需要存储每个周期有限状态机的具体状态。它们之间的关系是,状态转移模块根据当前有限状态机的状态(即状态存储模块所存储的值)和当前的输入计算出有限状态机的下一状态值,当时钟上升沿到来时,这个新的状态值被存入状态存储模块中。
输出模块的逻辑分为两种,根据输出逻辑的不同,有限状态机又被分为Moore型状态机和Mealy型状态机。它们之间具体的差别是,Moore型状态机的输出逻辑仅与有限状态机当前状态值有关;而Mealy型状态机的输出逻辑则与有限状态机的当前状态和当前输入有关。
设计建议
- 分析具体问题,画出状态转移图
- 对状态进行合适的编码
- 画出状态转移和输出逻辑的真值表
- 在Logisim中实现状态转移和输出逻辑,并采用合适的存储器存储具体状态值
如何初始化状态存储的初值???
- 利用Comparator,MUX和Counter进行选择,判断计数为0的情况下则选择初始化当前状态,其他情况则直接将状态存储的输出值反馈至当前状态
Attention:
- 注意分清状态转移和状态存储模块、分清状态和输入
- 以2^n_mod_5为例,输入是数值,状态是余数的值,输出是状态的独热码,输出的值可以理解为状态的独热码。
- 之前设计电路的时候其实是非规范的做法,实际上并没有进行状态的存储,而只是利用当前输入值进行计算,存储的是输入值的后两位。将当前数据输入的后两位当作了状态,也就是每次转移后的结果是输入值的后两位而并不是真正意义上的状态,意即状态转移部分只是左移原数取低位再加上输入,而在“状态存储”后进行真值表的编辑,使得独热码能够在“状态”和输入的控制下正确表示。
- 之所以正确是因为mealy型状态机的逻辑要求输入直接与当前状态联系并直接反馈于输出,因此存储的部分实际上是输入还是之前的状态,实际上影响了输出部分是之前输入值与当前输入运算得到当前状态,还是之前的状态与当前输入得到当前状态。而通法应该是后者。
- 通法:对状态进行操作,即开始时将输入与当前状态进行联系,状态转移后得到的应该是下一状态,状态存储的也应该是新的状态,本题中为了便于输出独热码,使用三位二进制来表示状态,之后输出部分使用译码器Decd转换为独热码即可。
6. 锁存器、触发器、寄存器的异同
-
锁存器和触发器均为存储一位状态的简单时序逻辑电路
-
锁存器:
- SR锁存器:一对交叉耦合的或非门; 一个在Q上存储一位状态的双稳态元件; S与R同时有效时输出不确定
- D锁存器:电平敏感锁存器; 时钟输入CLK用来控制状态发生改变的时间
-
触发器:
- D触发器:由反相时钟控制的两个背靠背的D锁存器; 在时钟上升沿将D复制到Q; 主从触发器
-
寄存器
- 组成结构:N位寄存器由由共享1个公共CLK输入的一排N个触发器组成
-
Q:一个时序电路中放两个时钟,时钟上升沿的控制是分开的吗
-
A: 在仿真时电路中的clk的电平转换是同时的
课上测试
问题合集
- 对于基本元件的使用与记忆出现致命性错误:在检查和重新连线时遗漏了bit_extender的sign型扩展
- 接问题1,检查的过程中分模块检查但致命性的遗漏了复位部分extender,只关心了直接的输入输出路径,对于复位线路的疏忽极其致命
- 不同类型状态机的理解仍旧需要巩固基础,不熟练导致在debug时方向错误
- 做题策略和心态问题,时间充裕的时候不妨做新的题目。不过这一点归根结底还是知识不熟练、学的不到位的问题。
类似的问题:compare元件是否为unsigned之间的比较还是二进制补码形式比较,元件基础参数设置!
其他知识点
-
Wire colors
-
MUX多路选择器:从多个输入信号中选择一个作为输出。
DMX多路分配器:将1个输入数据根据需要传送到多个输出端的任何一个输出端。
Decd译码器:将二进制编码转换为相应的独热码。 -
Bit-finder
-
RAM:
- One synchronous load/store port (default)一个同步载入/保存端口,由ID控制具体模式,1或悬空时为将数据load至元器件西侧指定的地址中,0时store端口处的数据。
- One asynchronous load/store port 一个异步载入/保存端口,除了无clk端口以外。当ID为0时load数据,当ID为0,地址或数据发生变化时,进行另一个store,该点使之更接近于许多可用的随机存取存储器
- Separate load and store ports 两个接口,一个store存储数据,一个load载入数据,免去了使用Controlled Buffer的必要
回顾
-
基础逻辑门的辨识
-
元器件的了解与熟练使用:Tunnel, Probe
-
状态机的题目至少分别做一道
-
基础概念、元器件继续仔细看,要专心!!!