阅读须知
本文章可适用于研究生找工作,此项目学习,意义在于标准化设计学习和验证,模块设计过程中的思考等都符合公司招生考察要素,虽然简单,但是值得认真思考。有想要详细了解的可以加微信w154785315,大家一起学习共同进步。
GPIO 端口介绍
GPIO 端口,即General purpose Input /Output port,是一种位于芯片数字部分和外面模拟PAD之间的模块,主要功能就是负责输入、输出数据,此外可以附加很多其他功能(Alternate Function),比如在模拟部分加上下拉电阻(pull-up/down),用三极管实现开/漏输出设计等。大家在网上可以看到很多基于现有GPIO进行其他应用设计的案例,作为数字IC设计工程师,我们当然要做一些自己行业相关的事情,那就是如何设计一个数字的GPIO模块,从而实现基本的逻辑功能。
GPIO功能分析
成熟的设计开始于完备的功能分析及模块划分,GPIO模块的设计同样如此。啊,我是大佬没错了 ~ 。~
一般来说GPIO端口的功能有哪些呢?业内大佬ARM必须拥有姓名,现在来看一段STM32的GPIO模块功能介绍:
我们只关注数字部分,模拟去掉。首先,GPIO端口应可以软件配置,其次,GPIO端口应具有基本的输入、输出功能,最后,GPIO端口还应该有一些附加功能。
将分析得到的GPIO数字模块功能进一步分析,我们得到以下设计需求:
- GPIO模块应可以由软件进行模式配置。
- GPIO模块应可以接收外来信号,并将这些信号存进寄存器中供软件读取。
- GPIO模块应可以发送软件存放在寄存器中的值。
- GPIO模块还可以添加一些额外的功能,比如固定占空比、不同频率的方波输出,中断检测,电流监控等。(这些功能我拍脑袋随便加的)
有了设计需求,我们就可以根据需求进行下一步工作:GPIO的模块划分。
GPIO模块划分
根据