Skip to content

jlu005807/Logisim

Repository files navigation

Logisim 课程设计与作业记录 🚗💻

本仓库包含模拟与数字逻辑电路设计(模数电)以及计算机组成原理与体系结构课程的 Logisim 仿真设计作业记录。

项目内包含完整的逻辑电路图与各模块的设计仿真文件(.circ),并提供仿真运行所需的 Logisim 环境。


📂 目录结构与项目映射

以下是本仓库的文件与文件夹结构及其对应的作业内容映射:

.
├── bus_arbitraion/              # 4. 总线集中式仲裁方式仿真设计
│   └── bus_arbitraion/
│       ├── bus_arbitration.circ         # 链式查询方式(基础版)
│       ├── bus_arbitration_modify.circ  # 链式查询方式(改进版)
│       ├── bus_arbitration_request.circ # 独立请求方式
│       └── bus_arbitration_timer.circ   # 计数器定时查询方式
├── 4.3.circ                     # 2. 存储器与 CPU 连接设计(基础版)
├── 4.3_modify.circ              # 2. 存储器与 CPU 连接设计(改进版)
├── Multiplie.circ               # 3. 原码一位乘法器设计(1位符号位,4位数据位)
├── m_CPU.circ                   # 5. 单周期 CPU 核心模块集成设计
└── logisim-evolution-3.9.0-all.jar # Logisim Evolution 仿真器运行环境

🛠️ 项目详细介绍

1. 汽车尾灯控制电路综合设计 (待建/设计方案)

该设计旨在使用数字逻辑电路模拟汽车在不同行驶状态下的尾灯控制。(.circ不见了,下面只有大概思路)

🌟 核心功能要求

  • 输入信号
    • $K_L$ (左转弯控制)、$K_R$ (右转弯控制)
    • $K_B$ (刹车制动控制)
    • $K_S$ (紧急停车控制)
    • $CP$ (1Hz 转向时钟脉冲)
    • $F_{50}$ (64Hz 等占空比脉冲,用于停车时降低一半亮度)
  • 输出显示
    • 左侧尾灯 $L_1, L_2, L_3$ 和右侧尾灯 $R_1, R_2, R_3$ (每侧 3 个 LED)

🚦 状态控制逻辑

  1. 转弯状态 ($K_L$$K_R$ 单独闭合):
    • 转向侧的 3 个尾灯按顺序循环点亮:●●● $\rightarrow$ ○●● $\rightarrow$ ●○● $\rightarrow$ ○○○ $\rightarrow$ ●●●... (循环周期为 4 个 $CP$ 时钟)
    • 另一侧尾灯在无刹车时常灭;若左右转弯开关同时闭合,两侧均按该顺序闪烁。
  2. 刹车制动状态 ($K_B = 1$):
    • 无转弯错误双转:所有 6 个尾灯全部常亮(100% 亮度)。
    • 正在转弯(如 $K_L=1, K_R=0$):转弯侧(左侧)保持正常顺序闪烁,非转弯侧(右侧)常亮。
  3. 紧急停车状态 ($K_S = 1$):
    • 所有尾灯以 50% 亮度点亮(通过与 64Hz 脉冲 $F_{50}$ 进行占空比调制实现)。
    • 实际使用中,停车状态优先级最高(且转弯时不停车)。

📐 总体架构设计

graph TD
    Inputs[K_L, K_R, K_B, K_S] --> LogicUnit[控制组合逻辑电路]
    CP[1Hz CP Clock] --> Counter[2位二进制计数器]
    Counter -->|输出状态 Q1 Q0| LogicUnit
    F50[64Hz F_50 Pulse] --> LogicUnit
    LogicUnit --> L_Lights[左尾灯 L1, L2, L3]
    LogicUnit --> R_Lights[右尾灯 R1, R2, R3]
Loading
  • 时序电路部分:使用两个 D 触发器构成一个模 4 的二进制计数器,产生 4 个状态:$Q_1 Q_0 \in {00, 01, 10, 11}$,分别对应闪烁的 4 个节拍。
  • 组合电路部分:根据输入 $K_L, K_R, K_B, K_S$ 以及计数器状态 $Q_1, Q_0$,通过卡诺图化简得出 $L_1\sim L_3$$R_1\sim R_3$ 的驱动方程。

2. 存储器和 CPU 连接 (4.3存储器和CPU连接)

  • 对应文件:4.3.circ / 4.3_modify.circ
  • 设计内容
    • 实现了 CPU 与存储器(包括只读存储器 ROM 和随机存取存储器 RAM)的硬件级连线。
    • 包含 16位/20位地址总线接口片选译码电路(通过译码器实现对不同存储芯片的地址空间映射)、读/写控制逻辑

3. 原码一位乘法器

  • 对应文件:Multiplie.circ
  • 设计内容
    • 设计并实现了一个 1位符号位 + 4位数据位 的原码一位乘法器。
    • 输入为 $X$ (被乘数) 和 $Y$ (乘数),最终输出结果为 1位符号位 + 8位数据位
    • 模块化设计
      • control:乘法器控制单元,用于根据乘数的最低位产生加法/移位控制信号,并管理计数和乘法周期。
      • point:处理符号位的异或确定电路($P_S = X_S \oplus Y_S$)。
      • Multipile / main:包含移位寄存器、4位加法器等组成的数据通路,通过逐步加法和右移完成原码乘法。

4. 总线集中式仲裁方式仿真设计

  • 对应文件夹:bus_arbitraion/
  • 设计内容
    • 使用 Logisim 仿真实现了计算机系统中的总线集中式仲裁机构。支持 4个主设备(Master 0~3)提出总线请求,共享 1 位数据总线。
    • 模拟了完整的总线请求(Req)、仲裁分配(Arbitration)、总线授权(Grant/Gnt)和数据发送过程。
    • 实现了以下三种主流的集中式仲裁方式:
      1. 链式查询方式 (bus_arbitration.circ):通过串行链路传递授权信号,物理位置越靠近控制器的设备优先级越高。
      2. 计数器定时查询方式 (bus_arbitration_timer.circ):控制器内部包含计数器,通过轮询设备地址分配总线使用权。
      3. 独立请求方式 (bus_arbitration_request.circ):每个主设备有独立的请求和授权线,控制器通过优先级编码电路(Priority Encoder)决定授权。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors