SI100B Spring 2025 EE Project

ASIC for Digital Image Processing

Tutorial 2
@Quanyu Chen
chenqy2022@shanghaitech.edu.cn

Contents

Contents

1. Sequential logic

Project tutorial 2

1. Sequential logic

什么是时序逻辑?

我们好像在哪里听过这个熟悉的词汇

是什么地方呢?

Project tutorial 2

1. Sequential logic

#c

Project tutorial 2

1. Sequential logic

#c

Project tutorial 2

1. Sequential logic

#c

Project tutorial 2

1. Sequential logic

What is a sequential circuit?

组合电路 是根据当前输入信号的组合来决定输出电平的电路。换言之,就是现在的输出不会被过去的输入所左右,也可以说成是,过去的输入状态对现在的输出状态没有影响的电路。

而 时序电路 的输出不仅受现在输入状态的影响,还要受过去输入状态的影响。

那么,如何才能将过去的输入状态反映到现在的输出上呢?我们人类总是根据过去的经验,决定现在的行动,这时我们需要的就是——记忆(Memory)。同样,时序电路也需要这样的功能。这种能够实现人类记忆功能的元器件就是 触发器 。

Project tutorial 2

1. Sequential logic

Sequential logic 时序逻辑

在传统数字电路课程中,学生将在“时序逻辑”这一章节学习到寄存器等相关元件。

显然,我们不是传统的数字电路课程。

因此,我们不会介绍时序逻辑中和器件相关的繁琐知识,而是通过对时序逻辑的 Top Level 的模块讲解,只力求让每一位同学建立对时序逻辑在电路中的应用的基本认知。

不要焦虑!我们只要会用就行!

Project tutorial 2

1. Sequential logic

1.1. Flip-Flop(触发器)

D Flip-Flop 是一种边沿触发(一般为上升沿) 的存储单元,以下是 D 触发器的基本真值表:

时钟 (CLK) D(输入,也就是当前状态) Q(输出,也就是下一个状态)
↑(上升沿) 0 0
↑(上升沿) 1 1
0 或 1(非边沿) x(不关心) 保持原状态

你只需掌握:

  1. 时钟信号 “向上变化” 时:输出 直接更新为输入 的值。
  2. 时钟信号处于 “稳定的高/低电平” 时:输出 保持之前的状态,不受输入 的变化影响。
Project tutorial 2

1. Sequential logic

1.2. Latch(锁存器)

锁存器是触发器的基础模块,用于存储 1 位二进制信息。

与触发器一样,它是一种电平触发器,即输出状态随输入变化,在输入信号有效电平时持续更新,并在无效电平时保持不变。

为避免问题复杂化,对于锁存器,你无需了解更多。

Project tutorial 2

1. Sequential logic

1.3. Regiser(寄存器)

半导体存储电路中使用的存储单元可以分为静态存储单元和动态存储单元两大类。静态存储单元由门电路连接而成,其中就包括寄存器和触发器。只要不切断供电电源,静态存储单元的状态就能一直保持下去。动态存储单元则利用电容的电荷存储效应来存储数据,我们暂时不做介绍。

存储器的种类虽然很多,但它们的基本结构形式都是由存储矩阵和读写控制电路两部分组成的。跟据工作方式不同,可以将存储器分为随机存储器(RAM)和只读存储器(ROM),随机存储器又分为静态随机存储器(SRAM),和动态随机存储器(DRAM)。

现代计算机中具有存储功能的部件比对

访问时间 存储元件 容量
1ns Register寄存器 <1KB
2ns Cache高速缓存(L1-L4) 32KB-256MB
10ns 主存 1-8GB
10ms 磁盘 1-4TB
Project tutorial 2

1. Sequential logic

1.3. Regiser(寄存器)

  1. 当时钟信号从低到高发生跳变(上升沿)时,每个触发器将对应的数据输入 锁存到其输出 。输出状态 和 分别为 和
  2. 在时钟信号稳定时(非上升沿),输出 保持之前的状态,不受数据输入 的变化影响。

#c

Project tutorial 2

1. Sequential logic

1.3. Regiser(寄存器)

寄存器由一组触发器组成,每个触发器的输入和输出都由引出端,可以直接和周围电路连接,快速地进行数据交换。由n个触发器组成的寄存器可以存储一组n位的二进制数据。

#c

#c

Project tutorial 2

2. Memory Component in Logisim

Project tutorial 2

2. Memory Component in Logisim

2.1. Register

#c

Project tutorial 2

2. Memory Component in Logisim

2.2. ROM

#c

Project tutorial 2

2. Memory Component in Logisim

2.3. RAM

#c

Project tutorial 2

3. Image I/O in Logisim

Project tutorial 2

3. Image I/O in Logisim

3.1. Logisim Memory 的数据读写

Logisim 提供了一组 Load / Save Memory 接口来进行数据读写。在 Logisim 中右键 RAM 或者 ROM,即可在弹出的选项中找到 Load / Save Image 选项:

值得注意的是,这里的“Image”是“镜像”的意思,并非指“图片”。其存储的是内存的内容。

#c

Project tutorial 2

3. Image I/O in Logisim

3.1. Logisim Memory 的数据读写

#c

Project tutorial 2

3. Image I/O in Logisim

3.1. Logisim Memory 的数据读写

对于一个配置为 8 Bit Address(256 个地址),数据位宽为 8 Bit 的 Memory,其 Image 如下:

v3.0 hex words addressed
00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
......
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Project tutorial 2

3. Image I/O in Logisim

3.2. 图片与 Memory Image 之间的转化

我们提供了两个脚本:

  • ImageToMemory.py
  • VisualizeMemory.py
Project tutorial 2

3. Image I/O in Logisim

3.3. Tasks

  1. 使用我们所提供的脚本进行一遍完整的 Image 和 Memory 之间的交互流程

  2. 使用我们提供的脚本给Memory喂一张图片,设置一下不同databits,导出看是否会让图片质量有所损失

  3. 在Logisim中实现一个计数器(Counter)

Optional Themes: ShanghaiTech_Tutorial / NaiLoong / QYGG