源代码如下:4、DS18B20接口的实现DS18B20接口状态机由如图2所示的8个状态组成:(1)RESET1:对DS18B20进行初始化,等待后进入JUDGE。(2)JUDGE:检测DS18B20是否存在。若不存在,返回RESET1;否则延时后进入SKIP1。(3)SKIP1:向DS18B20发送跳过ROM匹配命令,然后进入CONVERT。(4)CONVERT:向DS18B20发送启动温度转换命令,等待后进入RESET2。(5)RESET2:对DS18B20复位,等待600s后进入SKIP2。(6)SKIP2:向DS18B20发送跳过ROM匹配命令,然后进入GET。(7)GET:从DS18B20中读取温度测量值,然后进入STORE。(8)STORE:把所读取的温度测量值放入寄存器中,返回原始状态。其中CONVERT和GET两个状态嵌套使用了状态机,以完成DS18B20严格的写和读时序。系统的主要功能是实现对环境内部温度的控制。温度控制程序的算法直接影响着系统的工作效果,为了得到理想的,最优的结果我在温度控制算法上采用的是是PID(比例-积分-微分)算法,它是一种最经典也是最常用的闭环输出的自动控制模型,他可以根据当前的温度差来调整输纠正误差。5、顶层模块设计采用自上向下的设计方法将FPGA实现的功能分成DS18B20驱动模块、PID控制算法及PWM波产生模块和显示驱动模块等3个功能模块。DS18B20驱动模块实现1s信号的产生、延时DS18B20接口状态机。PID控制算法及PWM波产生模块实现采样时钟信号的产生、初始温度屏蔽、温度设定、PID算法以及PWM波的产生。显示驱动模块实现动态扫描显示时钟信号的产生、段码和位码的译码,以驱动4个七段数码管动态扫描显示百位、十位、个位和小数位数据。将这3个模块分别用VerilogHDL设计成功后,在顶层模块中进行例化的源代码为: