Verilog Ethernet
参考原有例程给出的NexysVideo
板卡原理图,主要是以太网部分,其采用的是小螃蟹的RTL8211E-VB
,而手头的XC7A35T板卡采用的是RTL8211FD
,两者区别在于前者兼容多种工作接口如MII、RGMII
等,后者只能以RGMII
接口工作。
Verilog Ethernet给出的例程中采用的接口为RGMII
接口,但是使用的部分信号线在手头的XC7A35T板卡上没有使用,后面需看一下该信号的具体作用。另外两个板卡使用的时钟也不一样,移植前需要先修改时钟设置。
高速警报灯定时设计
最开始采用的是自行设计的定时电路,如下。运放和参考源均选择静态工作电流在几个μA
级别的器件,主要控制R1-C1
的取值。实际测试后发现,C1
取100nF
,R1
取100MΩ
时,主开关Q1
大概有约20多秒
的关断时间。减小R1
方便示波器测试,R1
取10K
时Q1
关闭约14ms
,162K
时关闭约30ms
,与理论设计差距较大。
另外还对该电路进行电流测试,输入电压5V,电路在Q1
关闭时消耗电流约399.6μA
,在Q1
开启时消耗电流约706.5μA
,较接近1mA
。
对于拟作为主控的STM32芯片,其具有多种工作模式,除了正常运行模式外,还具有睡眠(sleep)
、低功耗运行(low power run)
、低功耗睡眠(low power sleep)
、停止(stop)
、待机(standby)
、关机(shutdown)
等多种模式,其消耗电流依次降低。以STM32G031
为例,各个模式下的运行状态如下。
睡眠(sleep)模式:在睡眠模式下,只有CPU停止。所有外围设备继续运行,并在发生中断/事件时唤醒CPU。
低功耗运行(low power run)模式:CPU核心供电由低功率电压调节器供电,限制CPU频率到2MHZ。
低功耗睡眠(low power sleep)模式:在低功耗运行模式下进一步关闭CPU进入该模式。当事件或中断触发唤醒时,系统将恢复到低功率运行模式。
停止(stop)模式:该模式下仅保留SRAM和寄存器中的内容,停止所有时钟,而且PLL、内部高速时钟、外部高速时钟被禁用,RTC、内外部低速时钟(32.768KHz)仍然保持工作。
待机(standby)模式:寄存器内容丢失,RTC域和待机电路中的寄存器内容保留,SRAM内容可以通过寄存器设置选择保留
。当外部重置事件(NRST引脚)、IWDG重置事件、唤醒事件(WKUP引脚,可配置上升或下降沿)或RTC事件(警报、周期性唤醒、时间戳、篡改)或LSE上检测到故障(LSE上的CSS)时,设备退出待机模式。
关机(shutdown)模式:可实现最低功耗。除了外部低速时钟(32.768KHz)可以工作外,其他时钟如PLL,HSI,HSE等全部断电,RTC可以保持在活动状态。SRAM和寄存器内容全部丢失,RTC域中的寄存器除外
。设备在外部重置事件(NRST引脚)、IWDG重置事件、唤醒事件(WKUP引脚、可配置上升或下降沿)或RTC事件(警报、周期性唤醒、时间戳、篡改)时退出关机模式。
要实现在不工作状态下的最低功耗,最好设置不工作时STM32G0工作在待机
或者关机
模式,需要唤醒时通过仍在运行的RTC生成闹钟(alarm)
事件唤醒。
待机模式下,开启RTC并对SRAM供电以保持SRAM内容不丢失,最大工作电流约为4μA
。该模式下可以在初始化时将程序导入到SRAM中运行,不用在被唤醒后重新从flash中读取程序进行一系列初始化,但是使用的相关外设如PLL,定时器,UART等还需要重新配置寄存器以设定其工作状态。
关机模式下,开启RTC并由外部32.768kHz晶振驱动,最大工作电流约0.835μA
。由于所有内容已丢失,需要重新执行启动过程,类似于单片机复位后重新运行程序。
高速警报灯电源设计
按功率以及运行时间可分为两个部分,高功率-短时间
运行区域和低功率-长时间
运行区域。高功率短时间
运行区域主要包括射频以及LED驱动部分,前者需要稳定的电源电压;低功率长时间
运行区域主要是主控芯片,该部分允许变化的电源轨。
整板供电主要用锂电池供电,以松下的2250mAh的18650型号电池为例,其基本的放电曲线如下。以整个电池的90%
容量即放电2025mAh
为放电上限,此时电池电压为2.5V。主控STM32芯片的供电电压最低可以到2.0V
,此时仍然可以用电池供电。
但是对于射频和LED驱动,如果以3.3V为驱动电压,仍然采用松下 2250mAh 18650
供电。假定该部分需要电流200mA,对于该电池来说放电速率约为0.1C
,1C
表示电池一小时完全放电时电流强度,以0.2C放电曲线为参考,放出90%
容量后电池仍然具有约3.4V电压,不存在电压跌落到3.3V一下的情况。
综合以上分析,两部分供电可以采用以下方式:
主控部分采用低甚至超低工作电流的LDO,LDO的压降一般在几百mV
以内,输出电流越低则压降越低
。LDO直接连接到电池两端,使电池全程对主控供电。
射频和LED驱动部分采用一路开关电源输出,开关电源输入通过一个MOS管接到电池两端。不工作时将MOS管关闭,需要工作时则开启MOS管。开关电源可以采用Buck拓扑,只需进行降压。如果出现了电池电压低于该部分要求的工作电压的情况,则该开关电源就需要加入Boost升压,或采用Buck-Boost以维持输出电压在全电池电压变化范围内的稳定。
PicoDAQ警报
已经在佛祖岭那边将PicoDAQ警报安装完成,本次仅安装一个,保留原有警报的同时在另一侧入口安装了一个警报,中控上点击加热后警报亮起,运行状态如下。
本文章使用limfx的vscode插件快速发布