2 控制器设计
2.1 控制器结构
控制器结构如图3所示,控制器由4部分组成,即逻辑控制、单总线时序控制、数据缓存和计数器。逻辑控制部分用于实现与CPU的通信,D0~D7为8位双向数据线,EN为启动信号,下降沿有效。A1、A0为地址信号,其组合决定控制器的工作状态。A1A0=00,控制器对DS1820执行复位操作;A1A0=01,控制器执行写入操作;A1A0=10,控制器执行读出操作。控制器由外部提供200 kHz的时钟信号CLK,产生5 μs的计数周期,控制器以5 μs为一个时间片形成DS1820的读写时序。计数器的计数输出值控制读写周期。单总线时序控制部分的主要功能是产生单总线的读写时序,并向DS1820 输出控制命令,读出DS1820测得的数字温度值及其他输出信息。

2.2 读写时序的实现
DS1820要求引脚驱动必须是漏极开路引脚,控制器用三态门与DS1820连接,如图4所示。其中ctrl为三态门控制信号,当ctrl=0时输出信号,ctrl=1时输入信号。控制器采用5 μs作为基本计时单位,可以保证DS1820时序关系有一定的余地。

写字节部分VHDL代码:
PROCESS(cq)—输出1 bit
SIGNAL cout:STD_LOGIC_VECTOR(2 DOWNTO 0);
VARIABLE di:STD_LOGIC;
BEGIN
ctrl<=‘0’;
IF(cq>=“0000” AND cq<=“0010”)THEN
di:=‘0’;——拉低输出电位10 ms
ELSIF(cq>“0010”AND cq<“1110”)THEN
di:=rq; ——取发送移位寄存器的输出位
ELSIF(cq>=“1110”)THEN
di:=‘1’;cout<=cout + 1;
END IF;
dqo<=di;
END PROCESS;
PROCESS(cout) —计数
SIGNAL f:STD_LOGIC;
IF cout=“111” THEN
f<=‘0’;—8位输出结束,停止计时
ELSE f<=‘1’;
END IF;
END PROCESS;
3 仿真波形
控制器的VHDL程序在MAX+plusII平台编译通过,并获得了正确的复位、读、写时序。图5为写时序波形,写入77H字节。每次写入新的bit前,控制器将总线电平拉底10 μs。

基于VHDL的嵌入式DS1820控制器,具有转换速度快、精度高、通用性好等优点。同时,嵌入软核的FPGA可以分担许多微处理器的工作,降低系统对 CPU实时性的要求,也降低了软件开发的难度。本文虽然是针对DS1820设计的控制器,但由于单总线通信协议的通用性,也可以用于其他单总线器件。
参考文献
[1] 王成江,王安敏,张玉华.单总线数字温度传感器原理及应用[J].半导体技术,2003,28(2): 68-70.
[2] 薛智宏,赵金,解丽红.DS1820的测量原理及提高分辨率的方法[J].河北工业科技,2002,19(6): 4-7.
[3] 许勇.DS1820在网络中心机房温控中的应用[J].电脑开发与应用,2001,14(9): 424-425.
[4] 陈善富,王荣亮.DS1820与PIC12C5XX系列微控制器应用于火灾感温测控器[J].计算机与现代化,2000,70(6): 111-114.
[5] 张令.温室群的温度自动测试系统[J].邯郸职业技术学院学报,2003,16(4): 65-68.
[6] 李农.FPGA与DS18B20型温度传感器通信的实现[J].国外电子元器件.2006,2(2): 48-51.
[7] 袁伟亭,周润景.FPGA与DS18B20组成的测温系统设计[J].内蒙古大学学报(自然科学版),2006,37(4): 459-463.
顶一下 0
踩一下
相关文章
用户评论
已有0位网友发表了看法
400-810-1218
热点技术




发表评论