北航计算机组成原理课程设计的Project0笔记,主要是关于logisim的使用和状态机的搭建。
p0复习(logisim)·
注意的点·
- 输入信号一般是通过MUX,多路选择器来实现对输出结果的控制。
- 刚连接好电路时或者连接电路中,可能出现有一些线路莫名其妙是蓝色,这时关闭logisim后再次打开往往就好了。
- comparator器件默认是有符号的,要调成unsigned来避免出现无符号数比较出现错误。
- 一些Arithmetic模块器件使用时,由于上下两侧也有输出端,如果连在一起可能出现意外。
- 组合逻辑部分如果输入、输出的位数较少,可直接用combinational analysis 里的 table 傻瓜式生成电路。
- 出现“xxxx”或者“EEEE”往往是因为电路中有连错的电路,比如把输入当成输出元件连了;某条线没有连接在模块/元件的端口上,而是连在了空白区域。
- 出现“ ”、fewer than output we expected可能是时序问题,比如超出了题目给出的时间。或者期待输出非零值时输出了0。也有可能是appearance不对
- DMX最好设置成 Three-state:Yes Disabled output:Float 如果Three state勾选为yes,那么DMX输出端没有被选中的路径会保持原来的值不变
时序逻辑—状态机·
参考文章:lyyf的logisim状态机博客
注意·
- 状态转移、输出逻辑用真值表生成。
- 寄存器的Q端在时钟信号为0时的值为初态,时钟信号的上升沿更新为次态。
- Moore输出逻辑,只和当前状态有关。
- Mealy输出逻辑,除了当前状态,还必须和输入发生联系。
- (当前状态值:时钟上升沿前是寄存器现有的值,上升沿时是状态转移模块的输出值s’)
Moore型·
Mealy型·
同步复位·
具体来说就是用一个多路选择器,如果复位信号为0,则正常更新状态值,如果为1,就直接赋值给寄存器常量0。
异步复位·
直接使用寄存器自带的clear端口进行复位即可
王pb助教的logisim评测帖子:http://cscore.net.cn/courses/course-v1:Internal+B3I062410+2020_T1/discussion/forum/course/threads/5f8ab909cf9bcc0efe0000bd
logisim命令行调试·
要用 jar 文件
我的电脑:java -jar logisim-generic-2.7.1.jar fsm.circ -tty table