天津科技大学2011届本科生毕业论文
? 每一次读写之前都要对 DS18B20进行复位; ? 复位成功后发送一条ROM指令; ? 最后发送一条功能指令。
因此在“ Read Temperature”时拆成两组命令:第一组命令实现DS18B20温度转换功能,而第二组命令实现 DS18B20温度读取功能。每一组命令包含了上述三个步骤的时序。两组命令依次传送到主控模块,主控模块的流程图一次循环将完成一种功能。即一次循环中包含了对DS18B20操作所遵循的三个步骤。
然而这样做主控模块将非常复杂冗长,而且不易扩展。经比较后发现,除了对 DS18B20初始化有特定的时序外,其他所有对 DS18B20的操作都可归结为两种时序:发WRITE TIME SLOTS的时序和发 READ TIME SLOTS的时序。另外,发送温度转化命令后,还需延时等待DS18BZO的转化完成,因此再多加一个温度转化等待模块。
尝试分配功能层次如下:第一层RS232接收上位机的代码;第二层主控模块拆分RS232接收到的上位机代码同时负责状态转换控制。不同于前面拆成两组,这次将DS18B20的一次循环中的三条命令也拆开。第三层为读写模块,初始化模块以及温度转化等待模块,由主控模块启动执行相应的对 DS18B20的操作。
这样拆分还有一个好处,就是写测试文件变得非常简单,整体硬件测试文件不必关心三步骤的时序,而可以一条条命令进行验证。但是拆分命令功能做在主控模块中不够清晰,因此最后决定由上位机负责这部分功能实现。
2)FPGA部分的设计
采用第上面所述的Control Block和data path的设计,另外考虑上位机与FPGA之间通信接口的扩展性,在FPGA中加入RS232串行通信模块(以后更改通信方式,只需更改此部分即可),还有时钟分频模块满足各个模块的时钟要求。
3)上位机和FPGA的通信
点击按钮后,上位机实际形成对应的一组命令(每条命令为一字节)依次发送给硬件电路串口,每个字节发送完毕后,上位机须在检测到硬件电路的一字节回复后再依据条件发送下一字节命令。硬件电路每接受上位机一字节命令后转化为相应对 DS18B20的操作并于操作完毕时返回一字节信号给上位机。上位机解析收到的数据并在一组命令结束后将所需结果显示在操作界面上。以下将具体说明已实现的两个按钮功能的运行过程:
①点击“Search”按钮,上位机形成init,searchrom,read,read,read,read, read,read,read,read十条命令依次发送给硬件电路的串口。
硬件电路对DS18B20执行的操作及返回给上位机的信号依次为: 初始化 DS18BZO(INITIALIZATION),返回initfin: 发送 OFO(SEARCHROM),返回Searchromfin;
16
天津科技大学2011届本科生毕业论文
发送8个 READ TIME SLOTS,返回从DS18B20接收到的一字节数据; ......
(重复最后一组命令8次,因为硬件电路收到上位机连续8条read命令,所以8次执行“发送8个 READTIMESLOTS”,共从DS18B20读取8字节数据)。
上位机将收到的64bit序号显示于程序界面中左上方的DS18B20 ROM ID Searching中,然后继续进行上述搜索操作,直到收到结束标志“0x55”才停止搜索操作。当在多挂载一线总线上指定某一DS18B20进行操作时,只需要先从列表中选择该DS18B20相应10号,再点击“ Read Temperature”便可。
②选择列表框“ DS18B20ROMIDSearehing”中代表了某个传感器的64bit序号,再点击“ Read Temperature”按钮,上位机形成init,matehrom,64bit序号,eonvert,init,matchrom,64bit序号,readpad,read,read共十六条命令依次发送给硬件电路的串口。
硬件电路对DS18B20执行的操作及返回给上位机的信号依次为: 初始化 DS18B20(INITIALIZATION),返回initfin; 发送55h(MATCH ROM),返回matchromfin; 发送 64bit序号的ISB,返回matchrom+1; ......
发送64bit序号的MSB,返回matchromfin+8; 发送44h(CONVERTT),返回convertfin;
初始化 DS18B20(INITIALIZATION),返回initfin; 发送55h(做 TehROM),返回matchromfin; 发送64bit序号的LSB,返回matchromfin+1; .....
发送64bit序号的MSB,返回matchromfin+8; 发送 BEh(READSCRATCHPAD),返回readpadfin;
发送8个 READ TIME SLOTS,返回从DS18B20接收到的一字节数据; 发送8个 READ TIME SLOTS,返回从DS18B20接收到的一字节数据。
3.6控制器逻辑功能流程图
首先设计各个硬件模块,其中主控模块状态机先只实现一些基本功能指令的流程控制,仿真测试单独的模块。
然后连接各个模块组成完整的硬件电路并进行一些基本功能指令的测试。 再利用串口调试助手及示波器检验硬件电路对一线总线上单个DS18B20的初始化(INITAILIZATION),发送匹配ROM命令 (MATCHROM),发送温度转
17
天津科技大学2011届本科生毕业论文
换命令(CONVERTT),发送引脚读取命令 (READ SCRATCHPAD),发送读时隙脉冲(READ TIME SLOTS)的操作结果。
串口调试结果正确后联合上位机程序实现最基本的“ Read Temperature”功能。
上位机调试结果正确后硬件电路继续添加其他功能,调试“搜索ROM命令 (SEARCHROM)和读取ROM工D命令”,在FSM中实现搜索算法将温度采集扩展至一线总线上多个DS18B20。整个系统逻辑框图可见图3-4。
温度传感器模数转换器1-wire收发器/传感器控制器DS18B20RS232收发器Control block(FSM)DATE PACHFPGA实现控制器RS232收发器控制器/状态机用户界面上位机PC 图3-4 系统逻辑功能流程图
3.7 控制器逻辑功能模块
FPGA实现的控制器处于PC端上位机与温度传感器 DS18B20中间。FPGA主要设计任务便是接收从串口得来的PC端上位机命令,通过内部状态机逻辑的判断和控制,通过 Data Path将命令传达至温度传感器DS18B20,并将命令的执行结果返回给上位机。FPGA主要实现l-wire收发器和RS232收发器,对两边沟通作用。
首先将说明模块层次的划分及各模块的功能,然后将详细解释模块划分的 关键问题,包括时钟选择,模块间握手信号约定,RS232串行通信模块及核心模
18
天津科技大学2011届本科生毕业论文
块 Control Block的控制原理。
3.7.1模块的层次结构
整个硬件模块大致分成三层,第一层为RS232串行通信模块和时钟分频模 块fenpin,第二层为主控模块 Control Block,第三层为 Data Path部分:读/ 写模块byte bit。如图3-5所示。 l)RS232串行通信模块
负责外部上位机串行bit与主控模块 ControlB10Ck并行byte间的数据传 输。RS232串行通信速率采用 11520Obit/S。
Uartrec从上位机接受一字节com命令发给主控模块Control Block; Uarttran从主控模块Contro1 Block接收一字节result回应发给上位 机。
2)分频模块fenpin
由50MHZ内部晶振产生与DS1820同步的IMHZ(即l us)时钟Clk l u。 3)主控模块 Control Block
负责状态转化控制,实现 Data Path和RS232收发器的沟通。通过内部FSM 逻辑的判断和控制,将命令传达至传感器,并将命令的执行结果返回给上位机。 由两个延时子模块组成。 初始化模块init
负责初始化急线上所有 DS18B20,并在初始化成功后报告主控模块初始化状态。若初始化失败,将继续初始化。若超过设定初始化时间仍不能成功初始化,将停止初始化并报警。 温度转化等待模块Convover
负责在读/写模块byte bit向DS18B20发出convert命令后延时800mS再报告主控模块转化完毕。根据 DS18B20用户手册,温度转化最多用750ms。所以采用800ms的保守估算。 4)Data Path
由读/写模块byte bit构成:负责主控模块Control Block和DS18B20之间 的数据通信。由主控模块Control Block的r_w信号决定是发WRITE TIME SLOTS 还是发READ TIME SLOTS。
19
天津科技大学2011届本科生毕业论文
Control blockFenPinFSMByte bit移位寄存器RS232uartrecinituarttranconvover为读写模块DS18B20DS18B20DS18B20……图3-5 系统模块层次结构图
3.7.2时钟分频模块的设计
RS232串行通信模块与分频模块fenpin直接使用SPARTAN-3的内50MHZ晶振作为触发时钟,而其余的模块则使用由分频模块产生的l us时钟以配合与DS18B20的l-wire传输时序。 3.7.3 Data Path的设计
在整个FPGA系统中, Data Path是在 Control Block内部状态机的控制下传输数据流,从而完成 Control Block和DS18B20之间的数据流通信。从图3-6中可以看到 Data Path中的“移位寄存器”完成数据的串并(并串)转换,然后通过“位读写模块”来对总线上的DS18B20传感器进行读写时序的操作。
20