基于VHDL的单总线从机读写控制器_第1页
基于VHDL的单总线从机读写控制器_第2页
基于VHDL的单总线从机读写控制器_第3页
基于VHDL的单总线从机读写控制器_第4页
基于VHDL的单总线从机读写控制器_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计基于设计基于 VHDLVHDL 的单总线从机读写控制器的单总线从机读写控制器 现代电子技术 作业 II 目目 录录 前 言 1 第 1 章 单总线技术 2 第 1 1 节 单总线技术简介 2 第 1 2 节 单总线技术的原理与硬件结构 2 第 1 3 节 单总线技术的信号方式 3 第 1 4 节 单总线技术的器件 4 第 2 章 DS18B20 简介 5 第 2 1 节 DS18B20 的封装与管脚 5 第 2 2 节 DS18B20 内部结构 5 第 2 3 节 DS1820 时序及工作方式 8 第 3 章 控制器设计 11 第 3 1 节 控制器结构 11 第 3 2 节 读写时序的实现 11 第 4 章 仿真与结论 19 课堂感悟与致谢 20 现代电子技术 作业 1 前前 言言 是美国达拉斯公司生产的一种单总线数字温度传感器 采用18 20DSB 1wire 总线通信协议 具有独特的单总线通信方式以及较高的测量精度 目前在实1wire 际生活中获得了广泛应用 本文介绍了的基本原理和通信时序 并用软件18 20DSB 模拟单总线时序 实现与的通信 18 20DSB 作为电子硬件设计的主流描述语言 采用层次化的设计方式 具有电路行VHDL 为描述能力强 灵活 通用及运算仿真速度快等特点 能够较容易地实现时序逻辑 控制 本文以数字温度传感器为例 设计一个基于的单总线控制器 18 20DSBVHDL 并对通信程序进行了仿真测试 本文介绍的单总线控制器 有较强的可扩展性 可以连接多种单总线器件 且 微处理器可以不用被迫关闭中断 满足各类对实时性具有严格要求的应用 现代电子技术 作业 2 第第 1 章章 单总线技术单总线技术 第第 1 1 节节 单总线技术简介单总线技术简介 单总线技术是达拉斯半导体公司推 1 Wire Bus DALLAS SEMICONDUCTOR 出的一项特有技术 它采用单根信号线 既可传输时钟 又能传输数据 而且数据 可以双向传输 由于这种单总线技术线路简单 硬件开销少 所以其具有成本低廉 便于总线扩展和易于维护等优点 单总线适用于单主机系统 能够控制一个或多个从机设备 主机可以是微控制 器 从机可以是单总线器件 它们之间的数据交换只通过一条信号线 当只有一个 从机设备时 系统可按单节点系统操作 当有多个从机设备时 系统则按多节点系 统操作 第第 1 2 节节 单总线技术的原理与硬件结构单总线技术的原理与硬件结构 单总线只有一根数据线 系统中的数据交换 控制都在这根线上完成 设备 主机或从机 通过一个漏极开路或三态端口连至该数据线 这样便可允许设备在 不发送数据时释放总线 以便其他设备使用总线 其内部等效电路如图 1 1 所示 图图 1 1 单总线硬件接口示意图单总线硬件接口示意图 单总线要外接一个约的上拉电阻 这样当总线闲置时 状态为高电平 主4 7 机和从机之间的通信通过以下三个步骤完成 初始化器件 识别器件 1wire 1wire 现代电子技术 作业 3 交换数据 由于二者是主从结构 只有主机呼叫从机时 从机才能答应 因此主机 访问器件必须严格遵循单总线命令序列 初始化 命令 功能命令 1wire ROM 如果出现序列混乱 器件则不会响应主机 搜索命令 报警搜索命令 1wire ROM 除外 根据以上原理 可以画出单总线硬件接口原理图 如图 1 2 所示 图图 1 2 单总线硬件接口原理图单总线硬件接口原理图 单总线端口为漏极开路 在本文中令单总线外接一个约的上拉电阻 这样 5k 不管什么原因单总线的闲置状态为高电平 如果传输过程需要暂时挂起 且要求传 输过程还能够继续的话 总线必须处于空闲状态 位传输之间的恢复时间没有限制 只要总线在恢复期间处于空闲状态 即高电平 即可 如果总线保持低电平超过 则将总线上的所有器件将复位 此外 在使用寄生方式供电时 为了保证单总480s 线器件在某些工作状态下 如温度转换期间 写入等 具有足够的电源电EEPROM 流 必须在总线上提供强上拉源 如图 1 2 中所示的 MOSFET 第第 1 3 节节 单总线技术的信号方式单总线技术的信号方式 所有单总线器件要求遵循严格的通信协议 以保证数据的完整性 协议1wire 定义了几种信号类型 复位脉冲 答应脉冲 写 写 读和读 时序 所有的单0101 总线命令序列 初始化 命令 功能命令 都是由这些基本的信号类型组成 ROM 这些信号 除了应答脉冲外都是由主机发出同步信号 并且发出的所有命令和数据 都是字节的低位在前 初始化时序包括主机发送的复位脉冲和从机发出的应答脉冲 现代电子技术 作业 4 主机通过拉低单总线以上 产生复位脉冲 然后主机释放总线 并进入480 s Tx 接收模式 当主机释放总线时 总线由低电平跳变为高电平时产生一上升沿 单Rx 总线器件检测到这上升沿后 延时 接着单总线器件通过拉低总线15 60 s 产生应答脉冲 当主机接收到从机应答脉冲后 说明此时有单总线器件60 240 s 在线 然后主机就开始对从机进行命令和功能命令的操作 ROM 在每一个写 写或读时序中 总线只能传输一位数据 所有的读写时序至少10 需要 且每两个独立的时序之间至少需要的恢复时间 读写时序均起始于60 s 1 s 主机拉低总线 在写时序中 主机拉低总线后保持至少的低电平则向单总线器60 s 件写 单总线器件在主机发出读时序时才向主机传送数据 所以当主机向单总线器0 件发出数据命令后 必须马上产生读时序 以便单总线能传输数据 在主机发出读 时序之后 单总线器件才开始在总线上发送或 若单总线器件发送 则保持总011 线高电平 若发送 则拉低总线 单总线器件发送数据之后 需保持有效的时间 0 因而 主机在读时序期间必须释放总线 并且必须在之内对总线状态进行采样 15 s 接收从机发送的数据 第第 1 4 节节 单总线技术的器件单总线技术的器件 为了区分不同的单总线器件 厂家在生产单总线器件时要刻录一个位的二进64 制代码 用于标明单总线器件的号 目前 单总线器件的主要有数字温度ROMID 传感器 如 转换器 如 门禁 身份识别器 如18 20DSBAD2450DS 单总线控制器 如 等等 1990DSADSIWM 其中数字温度传感器接线方便 封装成后可应用于多种场合 如管道18 20DSB 式 螺纹式 磁铁吸附式 不锈钢封装式等 其型号多种多样 有 8877LTM 等等 主要根据应用场合的不同而改变其外观 封装后的可用于8874LTM18 20DSB 电缆沟测温 高炉水循环测温 锅炉测温 机房测温 农业大棚测温 洁净室测温 弹药库测温等各种非极限温度场合 由于其耐磨耐碰 体积小 使用方便 封装形 式多样 适用于各种狭小空间设备数字测温和控制领域 目前有着广泛的应用 故 我们选择芯片来进行下面的设计 18 20DSB 现代电子技术 作业 5 第第 2 章章 DS18B20 简介简介 第第 2 1 节节 DS18B20 的封装与管脚的封装与管脚 芯片的常见封装为 如图 2 1 所示 也就是普通直插三极管的18 20DSB92TO 样子 也有其他形式的封装 如图 2 2 所示的封装以及图 2 3 所示的封装 SOSOP 各种封装的图示及引脚图如图 2 12 3 所示 图图 2 1 TO 92 封装封装 图图 2 2 SO 封装封装 图图 2 3 SOP 封装封装 第第 2 2 节节 DS18B20 内部结构内部结构 主要由部分组成 光刻 温度敏感器件 高速暂存存储18 20DSB464 bitROM 器和温度报警触发器 THTL 光刻中的序列号是出厂前被光刻好的 它可以看作是该的ROM64 bit18 20DSB 地址序列码 光刻的排列是 开始 位是产品类型标号 接着的64 bitROM8 28H 位是该自身的序列号 最后 位是前面位的循环冗余校验码 可由4818 20DSB856 下式得到 光刻的作用是使每一个都各不8541CRCXXX ROM18 20DSB 现代电子技术 作业 6 相同 这样就可以实现一根总线上挂接多个的目的 光刻保存18 20DSB64 bitROM 芯片的唯一的编码 18 20DSB64 bitROM 高速暂存存储器高速暂存存储器由 个字节组成 高速暂存存储器包含 个连续99 的字节 存放测得的温度的补码 和的拷贝数据 计数器余值和校验等THTLCRC 数据 其结构如图 2 4 所示 其中所有数据均以最低有效位在前的方式读写 当温度 转换命令发布后 经转换所得的温度值以二字节补码形式存放在高速暂存存储器的 第和第 个字节 单片机可通过单线接口读到该数据 读取时低位在前 高位在后 01 对应的温度计算规则为 当符号位时 直接将二进制位转换为十进制 当0S 时 先将补码变为原码 再计算十进制值 表 2 是对应的一部分温度值 第九1S 个字节是冗余检验字节 图图 2 4 存储器存储器DS18B20 由于芯片可以工作在寄生电源模式下工作 该模式允许工作18 20DSB18 20DSB 在无外部电源的状态 当总线为高电平时 寄生电源由单总线通过引脚 此时VDD 可以从总线得到能量 并将得到的能量储存到寄生电源储能电容中 当总18 20DSB 线为低电平时释放能量供给器件工作使用 简单的说就是在信号线为高电平的时间 周期内 把能量储存在内部的电容器中 在信号线为低电平期间 由存储在电容器 内的电荷供电 所以 当工作在寄生电源模式时 引脚必须接地 18 20DSBVDD 工作时信号线须接的上拉电阻 以保证信号线有足够的驱18 20DSB4 75 1 k 动能力 一个典型的硬件原理图如图 2 5 所示 18 20DSB 现代电子技术 作业 7 图图 2 5 硬件原理图硬件原理图DS18B20 如上图所示 芯片通过达拉斯公司的单总线协议依靠一个单线端口通18 20DSB 讯 当全部器件经由一个三态端口或者漏极开路端口与总线连接时 控制线需要连 接一个弱上拉电阻 在多只连接时 每个都拥有一个全球唯一的18 20DSB18 20DSB 位序列号 在这个总线系统中 微处理器依靠每个器件独有的位片序列号辨6464 认总线上的器件并记录总线上的器件地址 从而允许多只同时连接在一条18 20DSB 单线总线上 因此 可以很轻松地利用一个微处理器去控制很多分布在不同区域的 这一特性在环境控制 探测建筑物 仪器等温度以及过程监测和控制等18 20DSB 方面都非常有用 对于的电路连接 除了上面所说的传统的外部电源供电时的电路连接18 20DSB 图 也可以工作在上文所述的寄生电源模式中 图 2 6 表示了工18 20DSB18 20DSB 作在寄生电源模式下的硬件原理图 这样可以使工作在寄生电源模式下 18 20DSB 不用额外的电源就可以实时采集位于多个地点的温度信息 图图 2 6 寄生电源模式硬件原理图寄生电源模式硬件原理图DS18B20 现代电子技术 作业 8 第第 2 3 节节 DS1820 时序及工作方式时序及工作方式 时序如图 2 72 9 所示 时序波形的电平分为 种类型 主机作用的18 20DSB 3 高低电平 由输出的高低电平和由上拉电阻拉起的高电平 后种情况主18 20DSB2 机释放信号线 闲置时信号线保持高电平 对的任何操作 如18 20DSB18 20DSB 读 写 复位等 都是由主机对信号线的电平由逻辑高电平拉至低电平开始 图图 2 7 复位时序复位时序 复位时序是工作的基础 任何设备与间的通讯都需要以初始18 20DSB18 20DSB 化序列开始 一个复位脉冲跟着一个存在脉冲表明已经准备好发送和接收18 20DSB 数据 在初始化序列期间 总线控制器拉低总线并保持以发出一个复位脉冲 480 s 然后释放总线 进入接受状态 单总线由上拉电阻拉倒高电平 当探测到18 20DSB 引脚上的上升沿后 等待 然后发出一个由的低电平信IO15 60 s 60 240 s 号构成的存在脉冲 初始化时序见图 2 7 图图 2 8 写时序写时序 的数据读写是通过时序处理位来确认信息交换的 有两种写时序 写 18 20DSB1 时序和写时序 总线控制器通过写 时序写逻辑 到 写时序写逻辑01118 20DSB0 到 所有写时序必须最少持续 包括两个写周期之间至少的恢018 20DSB60 s 1 s 复时间 当总线控制器把数据线从逻辑高电平拉到低电平的时候 写时序开始 现代电子技术 作业 9 总线控制器要生产一个写时序 必须把数据线拉到低电平然后释放 在写时序 开始后的释放总线 当总线被释放的时候 上拉电阻将拉高总线 总控制器要15 s 生成一个写时序 必须把数据线拉到低电平并持续保持至少 060 s 总线控制器初始化写时序后 在一个到的窗口内对 线18 20DSB15 s 60 s IO 采样 如果线上是高电平 就是写 如果线上是低电平 就是写 10 写时序见图 2 8 图图 2 9 读时序读时序 当总线控制器发起读时序时 仅被用来传输数据给控制器 因此 总18 20DSB 线控制器在发出读暂存器指令或读电源模式指令后必须立刻开始读时序 可以提供请求信息 除此之外 总线控制器在发出发送温度转换指令或召18 20DSB 回指令之后读时序 EEPROM 所有读时序必须最少 包括两个读周期间至少的恢复时间 当总线控60 s 1 s 制器把数据线从高电平拉到低电平时 读时序开始 数据线必须至少保持 然后1 s 总线被释放 在总线控制器发出读时序后 通过拉高或拉低总线上来传输18 20DSB 或 当传输逻辑结束后 总线将被释放 通过上拉电阻回到上升沿状态 从100 输出的数据在读时序的下降沿出现后内有效 因此 总线控制器在读18 20DSB15 s 时序开始后必须停止把 脚驱动为低电平 以读取 脚状态 IO15 s IO 读时序见图 2 9 由时序图可知 单总线的通信协议由种信号类别组成 复位脉冲 存在脉冲 6 写 写 读 读 这些信号除了存在脉冲之外 均由总线主机产生 0101 主机通过单总线对的操作必须首先由操作命令其中之一开始 18 20DSBROM 现以单总线只挂接一个读取其中的温度数据为例 说明其工作过程如下 18 20DSB 1 主机产生复位脉冲 返回响应脉冲 18 20DSB 现代电子技术 作业 10 2 主机写入 跳过 命令 该命令为 种操作 Skip ROMCCHROM5ROM 命令之一 3 主机写入温度转换命令 44H 4 主机再次产生复位脉冲 返回响应脉冲 18 20DSB 5 主机写入 跳过 命令 Skip ROMCCHROM 6 主机写入读暂存存储器命令 BEH 7 读暂存存储器的温度数据 现代电子技术 作业 11 第第 3 章章 控制器设计控制器设计 第第 3 1 节节 控制器结构控制器结构 控制器结构如图 3 1 所示 控制器由部分组成 分别是逻辑控制部分 单总线4 时序控制部分 数据缓存部分以及计数器部分 逻辑控制部分用于实现与的通CPU 信 其中为 位双向数据线 为启动信号 下降沿有效 与为地址 07 DD 8EN 1 A 0 A 信号 其不同组合决定控制器的工作状态 当时 控制器对执行 10 00A A 18 20DSB 复位操作 当时 控制器执行写入操作 当时 控制器执行读出 10 01A A 10 10A A 操作 控制器由外部提供的时钟信号 用来产生的计数周期 控200 kHzCLK5 s 制器以为一个时间片形成的读写时序 读写周期则由计数器的计数输5 s 18 20DSB 出值控制 单总线时序控制部分的主要功能是产生单总线的读写时序 并向 输出控制命令 读出测得的数字温度值及其他输出信息 18 20DSB18 20DSB 图图 3 1 控制器结构控制器结构 第第 3 2 节节 读写时序的实现读写时序的实现 要求引脚驱动必须是漏极开路引脚 控制器用三态门与连接 18 20DSB18 20DSB 如图 3 2 所示 其中为三态门控制信号 当时输出信号 时输入ctrl0ctrl 1ctrl 信号 控制器采用作为基本计时单位 可以保证的时序关系留有一定5 s 18 20DSB 的缓冲余地 现代电子技术 作业 12 图图 3 2 输出引脚连接示意图输出引脚连接示意图 下面采用语言进行程序设计 实现以下功能 VHDL 1 当从机模块检测到主机发送的复位信号时 相应复位信号 2 从机接收主机发送的命令 ROM CMD 3 从机接收主机发送的信号 ROM ID 4 从机接收主机发送的命令和 数据 FCMD R W DATA 1 library IEEE 2 use IEEE STD LOGIC 1164 ALL 3 use IEEE STD LOGIC ARITH ALL 4 use IEEE STD LOGIC UNSIGNED ALL 5 6 entity ds18B20 is 7 port clk in std logic 50MHz 8 dq inout std logic DQ 数据输出输入端 9 rst in std logic 10 11 LED out std logic 指示标志 用来显示程序进行到哪一步 12 LED2 out std logic 13 LED3 out std logic 14 15 dataout1 dataout2 dataout3 out std logic vector 6 downto 0 数据输出端 16 end ds18B20 1 architecture Behavioral of ds18B20 is 2 3 TYPE STATE TYPE is RESET CMD CC WRITE BYTE WRITE LOW WRITE HIGH READ BIT 4 CMD 44 CMD BE WAIT800MS GET TMP WAIT4MS 状 态机 5 signal STATE STATE TYPE RESET 初始化状态机 6 signal clk temp std logic 0 监测总线上的数据 现代电子技术 作业 13 7 signal clk1m std logic 分频后得到的 1M 时钟 8 signal cp std logic 为时序而产生的 1ms 时钟 1 begin 2 分频程序 分到 1MHz 3 ClkDivider process clk clk temp 4 begin 5 if rising edge clk then 6 if count 24 then 7 count 0 8 clk temp not clk temp 9 else 10 count count 1 11 end if 12 end if 13 clk1m12000 then n 0 cp not cp end if 23 end if 24 end Process 1 STATE TRANSITION process STATE clk1m 主程序 2 begin 3 if rising edge clk1m then 4 if rst 0 then 5 STATE 如果处在复位状态 9 LED2 0 现代电子技术 作业 14 10 LED3 0 and cnt 500 then 500 s 的复位低电平 12 dq 0 dq 作为输出 13 cnt cnt 1 14 STATE 500 and cnt 510 then 16 dq Z 高阻态再输入下一级电路的话 对下级电路无任何影响 和没接一样 高阻态可 以应用在 inout 端口里面 这样在 inout 没有输出的时候就弄个高阻态 这样就其电平就可以由外面 的输入信号决定了 17 cnt cnt 1 18 STATE 510 and cnt 750 then 240 s 20 temp dq dq 作为输入 对于控制器来说是输入 对于 DS18b20 来说是输出 21 if cnt 580 then 22 temp dq 23 if temp 1 then 如果 temp 为 1 说明 DS18B20 存在 因为检测到了存在脉冲 24 LED 0 25 else 26 LED 1 27 end if 28 end if 1 cnt cnt 1 2 STATE 750 then 初始化时序结束 4 cnt 0 计数器清零 5 STATE 忽略 rom 指令 CC 8 LED2 1 9 LED3 0 10 write temp 11001100 将 write temp 设为 11001100 11 STATE 13 case WRITE BYTE CNT is 14 when 0 to 7 15 if write temp WRITE BYTE CNT 0 then 判断当前 write temp 第 WRITE BYTE CNT 上是否为 0 16 STATE WRITE LOW 如果当前 write temp 第 WRITE BYTE CNT 上是 0 进入 WRITE LOW 状态 即对 DS18b20 写低 现代电子技术 作业 15 17 LED3 1 18 else 19 STATE WRITE HIGH 如果当前 write temp 第 WRITE BYTE CNT 上是 1 进入 WRITE HIGH 状态 即对 DS18b20 写高 20 end if 21 WRITE BYTE CNT 23 if WRITE BYTE FLAG 0 then 第一次写 0XCC 完毕 24 STATE CMD 44 25 WRITE BYTE FLAG 1 26 elsif WRITE BYTE FLAG 1 then 写 0X44 完毕 27 STATE RESET 28 WRITE BYTE FLAG 2 29 elsif WRITE BYTE FLAG 2 then 第二次写 0XCC 完毕 30 STATE CMD BE 31 WRITE BYTE FLAG 3 32 elsif WRITE BYTE FLAG 3 then 写 0XBE 完毕 33 STATE GET TMP 34 WRITE BYTE FLAG 0 35 end if 36 WRITE BYTE CNTSTATE 进入写 0 时序 参看前面 40 LED3 43 dq 0 44 if cnt 70 then 等待时序 45 cnt 0 46 WRITE LOW CNT 1 47 else 48 cnt 51 dq Z 52 if cnt 5 then 53 cnt 0 54 WRITE LOW CNT 2 55 else 56 cnt 现代电子技术 作业 16 59 STATE WRITE BYTE 60 WRITE LOW CNTWRITE LOW CNT 进入写 1 时序 参看前面 64 case WRITE HIGH CNT is 65 when 0 66 dq 0 67 if cnt 8 then 68 cnt 0 69 WRITE HIGH CNT 1 70 else 71 cnt 74 dq Z 75 if cnt 72 then 76 cnt 0 77 WRITE HIGH CNT 2 78 else 79 cnt 82 STATE WRITE BYTE 83 WRITE HIGH CNTWRITE HIGH CNT 87 write temp 01000100 写指令 44h 88 STATE 90 write temp 10111110 写指令 BEh 91 STATE 93 case READ BIT CNT is 94 when 0 95 dq 0 4 s 的低电平 96 if cnt 4 then 97 READ BIT CNT 1 98 cnt 0 99 else 100 cnt 103 dq Z 4 s 的高电平 104 if cnt 4 then 105 READ BIT CNT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论