3.IO Controller
这部分不复杂,只是繁琐,实现的时候别漏了什么就好。
3.1 IO Multiplexing
IO复用主要含有正常功能复用和测试模式复用两大类。功能复用可以分为静态复用和动态复用。
静态复用顾名思义,是在一个相对大尺度的时间段内一个IO上的功能是不变的,一般通过软件配置寄存器、封装、strappin实现。
动态复用的时间尺度相对小一点,一般需要做点硬件逻辑自动实现多种功能在一个IO上的切换。比如同一组IO既做存储器接口也做显示接口,当播放视频的时候,需要从存储器中输入数据,然后把这些数据再输出到显示设备上,这种应用场景下这组IO一会儿做输入给存储器,一会儿做输出给显示设备,为了防止打架,需要处理好切换过程。
测试模式复用一般静态复用就够了。
3.2 GPIO Implementation
消费类芯片竞争激烈,如何用更小的成本实现更多的功能是个很大的挑战。具体到IO上,当然希望所有的数字IO都能在其正常功能之外,还能被软件自由的控制以扩充功能。我们称之为通用IO。GPIO的功能包括,IO方向的控制、输出值的控制、外部状态的输入、片外中断接收(沿触发、电平触发、抗毛刺等)、开漏模拟等等。
3.3 Strap Pin Implementation
strap pin是个非常有趣的功能。可以有两种实现方式,一种是用上电复位驱动一个latch来捕获strappin上的设定值;另一种是用一个free running的clock来寄存strap pin上的值。strappin的应用主要用于指示某种功能是否被激活,
这部分不复杂,只是繁琐,实现的时候别漏了什么就好。
3.1 IO Multiplexing
IO复用主要含有正常功能复用和测试模式复用两大类。功能复用可以分为静态复用和动态复用。
静态复用顾名思义,是在一个相对大尺度的时间段内一个IO上的功能是不变的,一般通过软件配置寄存器、封装、strappin实现。
动态复用的时间尺度相对小一点,一般需要做点硬件逻辑自动实现多种功能在一个IO上的切换。比如同一组IO既做存储器接口也做显示接口,当播放视频的时候,需要从存储器中输入数据,然后把这些数据再输出到显示设备上,这种应用场景下这组IO一会儿做输入给存储器,一会儿做输出给显示设备,为了防止打架,需要处理好切换过程。
测试模式复用一般静态复用就够了。
3.2 GPIO Implementation
消费类芯片竞争激烈,如何用更小的成本实现更多的功能是个很大的挑战。具体到IO上,当然希望所有的数字IO都能在其正常功能之外,还能被软件自由的控制以扩充功能。我们称之为通用IO。GPIO的功能包括,IO方向的控制、输出值的控制、外部状态的输入、片外中断接收(沿触发、电平触发、抗毛刺等)、开漏模拟等等。
3.3 Strap Pin Implementation
strap pin是个非常有趣的功能。可以有两种实现方式,一种是用上电复位驱动一个latch来捕获strappin上的设定值;另一种是用一个free running的clock来寄存strap pin上的值。strappin的应用主要用于指示某种功能是否被激活,