项目简介
本项目聚焦于ESP32硬件定时器,借助Arduino代码与Verilog硬件描述语言达成定时器的配置与模拟。通过编写Arduino代码对ESP32硬件定时器进行配置,同时运用Verilog描述具备相同接口的硬件定时器外设,并通过软件模拟与之交互,以此深入掌握硬件定时器的工作原理和操作方法。
项目的主要特性和功能
- ESP32硬件定时器配置:实现
setupTimer
、resetTimer
和readTimer
三个函数,可对ESP32硬件定时器模块进行初始化、重置和读取操作,且支持对定时器时钟预分频器的配置。 - Verilog硬件定时器设计:设计带有内存映射接口的硬件定时器外设,有无预分频器和有预分频器两种模式,能够模拟真实硬件定时器的工作。
- 软件模拟交互:编写Arduino风格的软件代码与Verilog设计的硬件定时器交互,通过模拟时钟周期实现定时器计数和显示。
安装使用步骤
任务1:配置ESP32硬件定时器
- 打开项目中的
lab5/task1/task1.ino
文件。 - 实现
setupTimer
、resetTimer
和readTimer
函数,依据文件顶部的硬件内存映射寄存器配置定时器。 - 使用Arduino IDE将代码上传到TinyPico设备。
- 观察串口输出的定时器计数值,确保定时器配置无误。
任务2:用Verilog设计硬件定时器外设
- 打开
lab5/task2
目录。 - 在
sw_driver.h
文件中重新实现setupTimer
、resetTimer
和readTimer
函数,使用readReg
和regWrite
函数与硬件寄存器交互。 - 在
timer.sv
文件中,先创建不包含预分频器的64位定时器模块,再添加预分频器功能。 - 打开终端,进入
lab5/task2
目录,运行make
命令编译并运行硬件/软件模拟。 - 观察模拟输出的定时器计数值,验证定时器功能。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】