ds1820是美国dallas公司生产的一种单总线(1-wire)数字温度传感器,采用1-wire总线通信协议。具有独特的单总线通信方式以及较高的测量精度,从而获得了广泛应用。参考文献[1]详细介绍了ds1820的基本原理和通信时序,提出由单片机的i/o端口模拟单总线时序来控制ds1820的方法[1]。参考文献[2]更进一步地将ds1820测量温度的分辨率由0.5 ℃提高到了0.1 ℃。将ds1820应用于不同领域,同样取得了较好的效果[3-5]。上述文献在使用ds1820时均采用微处理器作为总线主机,利用微处理器的i/o端口,用软件模拟单总线时序,实现与ds1820的通信。因为1-wire器件对总线时序要求严格,因此,为了保证与ds1820的可靠通信,微处理器需要采用关闭中断的办法,以防止操作时序被中断服务所破坏。这种方法增加了软件的设计难度,影响了系统的实时性[6]。
vhdl作为电子设计主流硬件描述语言,采用了层次化设计方式,具有电路行为描述能力强、灵活、通用、运算速度快的特点,能够较容易地实现时序逻辑控制[7]。以数字温度传感器ds1820为例,设计一个基于vhdl的单总线控制器,实现与ds1820的通信。本文介绍的单总线控制器,有较强的可扩展性,可以连接多种单总线器件,且微处理器可以不用被迫关闭中断,满足实时性严格要求的应用。
1 ds1820简介
1.1 ds1820内部结构
ds1820主要由4部分组成:64 bit光刻rom、温度敏感器件、高速暂存存储器和温度报警触发器th、tl。64 bit光刻rom保存ds1820的唯一64 bit的rom编码。高速暂存存储器包含9个连续的字节,存放测得的温度(补码)、th和tl的拷贝、计数器余值和crc校验等数据,其结构如图1所示。所有数据均以最低有效位在前的方式读写。
ds1820可以采用寄生电源的方式供电,在信号线为高电平的时间周期内,把能量储存在内部电容器中,在信号线为低电平期间,由存储在电容器内的电荷供电。ds1820工作时信号线须接4.7 kω的上拉电阻,以保证信号线有足够的驱动能力。
1.2 ds1820时序及工作方式
ds1820时序如图2所示,时序波形的电平分为3种类型:主机作用的高低电平、ds1820输出的高低电平和由上拉电阻拉起的高电平(后2种情况主机释放信号线)。ds1820闲置时信号线应保持高电平。对ds1820的任何操作(读、写、复位等)都是由主机对信号线由逻辑高电平拉至低电平开始。
由时序图可知,单总线的通信协议由6种信号类别组成:复位脉冲、存在脉冲、写0、写1、读0、读1。所有这些信号除了存在脉冲之外,均由总线主机产生。
主机通过单总线对ds1820的操作必须首先由rom操作命令之一开始。现以单总线只挂接一个ds1820,读取温度数据为例,其工作过程如下:
(1)主机产生复位脉冲,ds1820返回响应脉冲;
(2)主机写入skip rom(cch,跳过rom)命令,该命令为5种rom操作命令之一;
(3)主机写入温度转换(44h)命令;
(4)主机再次产生复位脉冲,ds1820返回响应脉冲;
(5)主机写入skip rom(cch,跳过rom)命令;
(6)主机写入读暂存存储器命令(beh);
(7)读暂存存储器的温度数据。
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=“0000” and cq“0010”and 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设计的控制器,但由于单总线通信协议的通用性,也可以用于其他单总线器件。
CSAIL推出了一篇文章统计了今年计算机领域18个值得注意的新闻
气隙/气隙磁通量在电机中起到什么作用?
ARDUINO蜘蛛机器人DIY图解
RDMA RoCEv2、AWS SRD/EFA和阿里云HPCC
美媒放风对华芯片限制有松动,台积电三星可能得到“豁免”
DS1820单总线(1-wire)数字温度传感器
modbus转MQTT支持TCP以太网通讯接入阿里华为云
Encrypted Boot image泄漏讨论
人工智能13种趋势及将在未来几年产生巨大影响
大联大世平集团推出基于NXP产品的跳频无钥匙车辆门禁系统解决方案
企业要开启工业4.0之旅,这七项有关数字化的关键步骤可借鉴
高压工频变压器型电源电路图分析
专业医疗器械工业设计的市场会较往年有更加巨大的市场份额
怎样使用SDN优化业务连续性?
照明行业相关输美产品税率变化
云杰通信推出全新企业SD-WAN智能网组
校企合作“芯”篇章丨芯盾时代入选北京工业大学创新创业实训基地
SpaceX 星际飞船原型 SN10 顺利完成首次发动机静态点火测试
人工智能全面布局:小小芯片圆了世界级创新的梦想
九种计算机存储的类型及工作原理