[MCU] 【中科亿海微EQ6HL45开发平台测评体验】+04.RTC上板测试与Debug(zmj)

卿小小   2022-11-8 17:42 楼主

【中科亿海微EQ6HL45开发平台测评体验】+04.RTC上板测试与Debug(zmj)

 

中科亿海微EQ6HL45开发板的RTC测试工程实现了配置DS1302-RTC并读取日历时间,最后通过串口发送到PC的功能,通过串口调试助手可以看到时间信息。

为了测试DEBUG功能,我在工程中增加了呼吸灯代码breath.v控制LED4;Led1/LED2/LED3作为操作状态指示灯闪亮。串口波特率115200bps。

03_RTC_UART_LED

 

1. RTC简介

RTC( Real-Time Clock)实时时钟为系统提供一个可靠的时间,并且在断电的情况下,RTC实时时钟也可以通过电池供电,保证RTC功能一直运行下去。

中科亿海微EQ6HL45开发板的RTC设计采用DALLAS公司的低功耗实时时钟芯片(型号DS1302),它可以提供到2099年内的日历功能。RTC通过类SPI总线向FPGA传送8位数据( BCD码),数据包括秒,分,小时,日期,天,月和年。 RTC芯片需要外接一个32.768KHz的无源晶振,这样才能让RTC可以准确的提供时钟信息。同时为了产品掉电以后,实时时钟还可以正常运行,一般需要另外配一个纽扣电池(型号CR1220,电压为 3V)给时钟芯片供电,这样保证DS1302始终正常运行提供时间信息。

在原理图中DS1302的VCC2为主电源,VCC1为后备电源。

//------RTC-DS1302原理图

 

image-20221107193716738.png

 

2. 部分代码解析

工程框架如图所示:

 

image-20221108150758899.png

 

2.1 端口声明

端口声明中主要是添加了led[3:0],它指向了开发板的LED1~LED4。

//------rts_top的端口声明
    //---system clock
    input               sys_clk         ,//50MHz
    input               rst_n           ,//KEY1_RST
    //---RTC-ds1302
    output              rtc_sclk        ,//spi_clk
    output              rtc_ce          ,//spi_ce
    inout               rtc_data        ,//spi_data
    //---led
    output  wire [3:0]  led             ,//LED1~LED4
    //---
    input               uart_rx         ,
    output              uart_tx     

 

2.2 呼吸灯模块例化

以前写了一个呼吸灯代码breath.v,主要是通过可变PWM输出控制LED实现呼吸效果。

在顶层模块中例化呼吸灯模块,它控制板卡上的LED4实现呼吸闪亮效果。

//------led[3]
    //------breathe_led
    breath      u_breathe_led(
    .clk            (sys_clk         ),
    .led            (led[3]          )
    );

 

2.3 操作状态指示灯

除去呼吸灯LED4,剩下的Led1/LED2/LED3作为操作状态指示灯闪亮,用来标识系统的工作状态。

//------led[2:0]
    //------uart
    uart_send uart_send_m0(
    .clk            (sys_clk         ),
    .rst_n          (rst_n           ),
    //---
    .led            (led[2:0]        ),//
    //---
    .read_second    (read_second     ),
    .read_minute    (read_minute     ),
    .read_hour      (read_hour       ),
    .read_date      (read_date       ),
    .read_month     (read_month      ),
    .read_week      (read_week       ),
    .read_year      (read_year       ),
    .uart_rx        (uart_rx         ),
    .uart_tx        (uart_tx         )
    );
​
    assign led = (state == WAIT)? 3'b111 : ((state == SEND)? 3'b000 : 3'b000);

 

3. 添加Debug信号

工程在SYNTHESIS综合完成后可以通过“SYNTHESIS/Set_Up_Debug”添加Debug调试信号,该步骤与AMD-Xilinx的Vivado基本完全相同。

详细步骤如下所示:

 

image-20221107123532811.png
image-20221108103637848.png

 

image-20221107123602988.png

 

image-20221107123619636.png

 

4. 功能测试

详细操作步骤如下:

做好准备工作,烧录程序,然后通过串口调试助手观察串口信号,eLINX软件添加ILA观察Debug信号。

 

//------准备工作
连接串口、JTAG和电源线,然后上电。
//------烧录步骤(类似Quartus-II)
①.Auto-Detect:JTAG扫链,找到FPGA(EQ6HL45);
②.选中FPGA(eHiWay-EQ6HL45);
③.Add-File...:添加烧录文件rtc_prj.jpsk;
④.勾选□Program/Configure;
⑤.点击Start进行烧录。
//------Debug使用(类似Vivado)
a.Debug路径:Window/Dashboard/New-Dashboard。
b.默认ila_0,直接点击OK即可打开ILA观察信号。
c.添加信号,设置触发位置以及触发条件,观察信号。
//------测试结果(图片+视频)
a.串口调试助手设置波特率115200bps(8n1),可以观察到FPGA发送的时间信息(每秒一次)。
b.ILA窗口:可以观察到时间2022年11月08日15:07:28跳变到15:07:29。
c.Led1/LED2/LED3作为操作状态指示灯闪亮,用来标识系统的工作状态。
d.LED4实现呼吸灯效果。

//------准备工作

 

image-20221108160348691.png

 

//------烧录步骤

 

image-20221108152352662.png

 

//------Debug使用(类似Vivado)

 

image-20221108154331244.png image-20221108154331244.png

//------测试结果(图片+视频)

 

image-20221108152930363.png image-20221108152930363.png

image-20221108154345153.png

附. 呼吸灯代码breath.v

breath.v (2.87 KB)
(下载次数: 1, 2022-11-8 17:40 上传)

 

//------END

本帖最后由 卿小小 于 2022-11-8 17:41 编辑

回复评论 (2)

观看了楼主的测试结果,图片和视频,呼吸灯效果不错

串口调试助手观察串口信号,必须要用eLINX软件添加ILA观察Debug信号么

点赞  2022-11-12 09:20
引用: Jacktang 发表于 2022-11-12 09:20 观看了楼主的测试结果,图片和视频,呼吸灯效果不错 串口调试助手观察串口信号,必须要用eLINX软件添加I ...

如果想观察内部信号的状态,只能用eLINX软件观察;

如果通过串口或者其他IO接口进行状态监测,则无需ILA。

 

选择自己合适的调试debug方式。

点赞  2022-11-14 16:26
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复