我是二楼
❤️
外设功能定义
既然已经知道了需求,下一步就是在Vivado中去创建工程,创建PL+PS的块设计文件(Block Design)了。添加完Zynq Processing System之后,看着绿绿的Zynq页面,我就开始疑问,我需要添加哪些外设,第一个疑问,我要添加的外设功能,根据一楼的任务计划,可以明确是需要添加:
功能 |
外设控制器 |
位置 |
备注 |
数码管 |
SPI |
PS |
配合定时器实现定时刷新 |
ADC |
SPI |
PL |
可以选择切换使用高速连续控制器(Verilog驱动)和SPI通用控制器 |
拨码开关 |
IO |
PL |
都行,节约EMIO吧 |
按键 |
IO |
PS |
用到中断,使用EMIO方便一些 |
SD卡 |
SDIO |
PS |
这个控制器比较复杂,用PS自带的要方便省事很多,PL实现代价比较大 |
DAC |
自定义IP |
PL |
DDS 需要使用PL逻辑实现 |
调试串口 |
UART |
PS |
PS侧串口实现调试信息打印 |
数据串口 |
UART |
PL |
PL侧串口比较灵活,一般不会与调试串口的硬件绑定,可以随意 ,远端可以是电脑,也可以是各种MCU或应用处理器 |
外设编号确定
当确定了各个功能使用PS或PL中的哪个控制器后,下一步就是确定硬件映射,例如对于PS侧的串口,PS侧总共有2个串口,这两个串口又能够分别映射到多组MIO,这个时候,选择哪个串口,以及选择哪组MIO,就需要根据硬件板卡来确定了,因为对于一个确定的硬件板卡,各个功能所对应的IO就都已经是限定好了。需要按照硬件电路的设计去对应选择控制器和对应的MIO。
我们目前提供的Zynq全功能教学平台型号为ACZ702,在该开发板上,UART1使用MIO48和MIO49这两个IO,通过CP2104型USB转串口芯片,实现调试串口的功能,所以PS侧的串口只能使用UART1,对应IO为MIO48和MIO49,具体的对应关系我是从“Zynq SoC 嵌入式设计和开发教程的硬件介绍部分查到的。
以下为本案例中各个外设控制器的进一步使用情况。
功能 |
外设控制器 |
位置 |
控制器编号 |
管脚 |
备注 |
数码管 |
SPI |
PS |
SPI0 |
EMIO |
配合定时器实现定时刷新 |
ADC |
SPI |
PL |
|
|
可以选择切换使用高速连续控制器(Verilog驱动)和SPI通用控制器 |
拨码开关 |
IO |
PL |
|
|
都行,节约EMIO吧 |
按键 |
IO |
PS |
|
EMIO |
用到中断,使用EMIO方便一些 |
SD卡 |
SDIO |
PS |
SD0 |
MIO40-45 |
这个控制器比较复杂,用PS自带的要方便省事很多,PL实现代价比较大 |
DAC |
自定义IP |
PL |
|
|
DDS 需要使用PL逻辑实现 |
调试串口 |
UART |
PS |
UART1 |
MIO48-49 |
PS侧串口实现调试信息打印 |
数据串口 |
UART |
PL |
|
|
PL侧串口比较灵活,一般不会与调试串口的硬件绑定,可以随意 ,远端可以是电脑,也可以是各种MCU或应用处理器 |
|