参考电路 5508

Create a 1-Wire Master with Xilinx PicoBlaze



Introduction

This reference design (RD) describes a 1-Wire® Master with PicoBlaze™ 8-bit embedded microcontroller design implemented and tested on the Xilinx® Spartan®-6 LX9 MicroBoard by Avnet. This example design uses the DS28EA001-Wire digital thermometer with sequence detect and PIO on a peripheral module. This module uses the Pmod™ port standard developed by Digilent Inc.

System Design Block Diagram

The system shown in Figure 1 shows the high-level implementation of the design. The system requires:

  • PicoBlaze processor
  • 2 BRAMs (each 1024 x 18-bit)
  • RS-232 port (USB UART)
  • LEDs for alarms
  • 681Ω ±1% pullup resistor
  • Maxim Integrated DS28EA00 peripheral module (DS28EA00PMB1#)
  • Xilinx platform cable USB

Figure 1. System design block diagram.
Figure 1. System design block diagram.

Introduction

This reference design (RD) describes a 1-Wire® Master with PicoBlaze™ 8-bit embedded microcontroller design implemented and tested on the Xilinx® Spartan®-6 LX9 MicroBoard by Avnet. This example design uses the DS28EA001-Wire digital thermometer with sequence detect and PIO on a peripheral module. This module uses the Pmod™ port standard developed by Digilent Inc.

System Design Block Diagram

The system shown in Figure 1 shows the high-level implementation of the design. The system requires:

  • PicoBlaze processor
  • 2 BRAMs (each 1024 x 18-bit)
  • RS-232 port (USB UART)
  • LEDs for alarms
  • 681Ω ±1% pullup resistor
  • Maxim Integrated DS28EA00 peripheral module (DS28EA00PMB1#)
  • Xilinx platform cable USB

Figure 1. System design block diagram.
Figure 1. System design block diagram.

Reference Design Requirements

Software

The RD's software requirements are:

Hardware

The RD's hardware setup is:

File Structure

The directory structure and critical files for this RD are shown in Table 1.

Table 1. Reference Design Directory Structure

Directory Supplied File Description
S6LX9_PicoBlaze_1Wire_ise_14_2\ All Contains files for the whole project
source\ise\ OneWire.xise ISE project file
source\hdl\ OneWire.vhd Top-level VHDL source
kcpsm6.vhd PicoBlaze microcontroller source
source\hdl\KCPSM3_UART\ UART_Manual.pdf PicoBlaze UART manual
UART_real_time_clock.pdf PicoBlaze UART real-time clock manual
source\hdl\KCPSM3_UART\VHDL\ bbfifo_16x8.vhd PicoBlaze UART FIFO macro
kcuart_rx.vhd PicoBlaze UART receive macro
kcuart_tx.vhd PicoBlaze UART transmit macro
uart_rx.vhd PicoBlaze UART receive wrapper
uart_tx.vhd PicoBlaze UART transmit wrapper
source\psm kcpsm6.exe Windows executable to compile the PicoBlaze application
OWP.psm  
OWP.log PicoBlaze 1-Wire log of the compiler output
OWP.vhd Compiled PicoBlaze application formatted to initialize the Spartan-6 Block RAM
ROM.form.vhd BRAM instantiation template used by the PicoBlaze assembler
KCPSM6_User_Guide_31March11.pdf PicoBlaze user's guide
source\ucf OneWire.ucf User Constraints File that defines timing and pin location constraints for the project
ready_for_download onewire.bit Project bitstream
hardware DS28EA00PMB1_sch.pdf DS28EA00 peripheral module schematic and board layout
DS28EA00PMB1_BOM.xls Bill of materials for the DS28EA00 peripheral module
DS28EA00PMB1_gerber.zip Gerber to manufacture the DS28EA00 peripheral module

 

Installing the UART Driver and Virtual COM Port

If the S6LX9 MicroBoard has not been connected to the PC before, you must install the software driver for the virtual COM port (VCP):

  1. Follow the instructions in the "Silicon Labs CP210x USB-to-UART Setup Guide" to complete the installation of the USB driver for the S6LX9 MicroBoard. Click here for the driver location.
  2. Connect the USB-A to USB micro-B cable to the host PC and connector J3 on the S6LX9 MicroBoard.
  3. Windows 7 will automatically assign a VCP to the board. The Device Manager shows which COM port is assigned. It also allows the user to select a COM port. For example in this system, the default virtual COM port is COM17. Look in the Ports (COM & LPT) listing for the Silicon Labs CP210x USB to UART Bridge item. Note the COM port assigned by the system.

Set Up the S6LX9 MicroBoard

Use the following procedure to set up the application:

  1. Connect the USB-JTAG cable with a pod and ribbon connector between the JTAG connector on the board and a USB port on the PC. P
  2. lug the USB cable into the PC and port J3 on the S6LX9 board. LED D7 will illuminate. 
  3. Plug in the DS28EA00 peripheral module with the component side facing the Spartan-6 into J5, the row where pin 1 is marked by the white dot. 

Figure 2. The S6LX9 MicroBoard.
Figure 2. The S6LX9 MicroBoard.

The 1-Wire Demo

Using the prebuilt bitstream file called "onewire.bit", the demo can be loaded into the FPGA and run without building the design. The Xilinx tools must be installed on your host PC, and the hardware should be set up as explained by the instructions in the "Set Up the S6LX9 MicroBoard" and "Installing the UART Driver and Virtual COM Port" sections. Here is the quick procedure to follow:

 

  1. Follow the install directions described in the "Installing the UART Driver and Virtual COM Port" section.
  2. Set up the S6LX9 MicroBoard as described in "Set Up the S6LX9 MicroBoard" section.
  3. Start a Tera Term or HyperTerminal session. Set the serial port parameters to your VCP, 9600 baud rate, no parity,8 bits, 1 stop bit, and no flow control.
  4. Using your Xilinx platform cable and the Xilinx software loading tool called iMPACT, load the "onewire.bit" file into the Spartan-6.
  5. If the DS28EA00 peripheral module is plugged in correctly, you will see:
  6. Note: If the "romid" shows all zeroes, recheck your connections. The DS28EA00 peripheral module likely does not have correct orientation or is plugged into the wrong row.

  7. You can run the demo by typing "1" at the command prompt. This will display the temperature in 2's complement hex, followed continuously by the temperature in decimal. Also, the two LEDs on the DS28EA00 peripheral module will illuminate to represent the high and low alarms, similar to a thermostat controlling heating and cooling. The high alarm A default threshold is set to turn on at ≥ 29°C and the low alarm B default threshold is set to turn on at < 27°C. To exit at any time, press the Esc key.
  8. You can change the DS28EA00 peripheral module alarm LEDs by inputting a 2's complement threshold. As an example, if you input 1Ch (28d) into the high alarm threshold, LED A will turn on at ≥ 28°C. If you input 1Ah (26d) into the low alarm threshold, LED B will turn on at < 26°C. These new alarms are activated by typing "1" at the command prompt.

Compiling the Design

This design is contained within the PicoBlaze application code and can be updated to work with any 1-Wire slave device. There are key 1-Wire subroutines that should be understood by the designer. The low level 1-Wire subroutines are listed in Table 2. The design is contained within OWP.psm and if desired can be modified for your application.

Table 2. Key 1-Wire Subroutines

Speed Subroutine Description
Standard ow_reset_slow Resets the 1-Wire slave devices and prepares them for a command.
Standard write_byte_slow Sends 8 bits of communication to the 1-Wire slave devices.
Standard write_byte_slow_power Sends 8 bits of communication to the 1-Wire slave devices and then supplies strong pullup. The strong pullup will be cleared when the next 1-Wire subroutine is issued.
Standard read_byte_slow Receives 8 bits of communication from the 1-Wire slave devices.
Standard read_byte_slow_power Receives 8 bits of communication from 1-Wire slave devices and then supplies strong pullup. The strong pullup will be cleared when the next 1-Wire subroutine is issued.
Overdrive ow_reset_fast Resets the 1-Wire bus slave devices and prepares them for a command.
Overdrive write_byte_fast Sends 8 bits of communication to the 1-Wire slave devices.
Overdrive write_byte_fast_power Sends 8 bits of communication to the 1-Wire slave devices and then supplies strong pullup. The strong pullup will be cleared when the next 1-Wire subroutine is issued.
Overdrive read_byte_fast Receives 8 bits of communication from the 1-Wire slave devices.
Overdrive read_byte_fast_power Receives 8 bits of communication from the 1-Wire slave devices and then supplies strong pullup. The strong pullup will be cleared when the next 1-Wire subroutine is issued.

Recompiling Procedure

  1. The PicoBlaze assembler will produce the needed files for implementing your design. The new files will overwrite older files, so back up your original files before recompiling. Open Windows Explorer by navigating to "source\psm" and double-clicking on the program file called "kcpsm6.exe." You might receive a security warning stating "The publisher could not be verified. Are you sure you want to run this software?" Click run and you will get the following KCPSM6 assembler window:
  2. Type the OWP.psm file name and hit the return key to compile.
  3. The PicoBlaze assembler will begin running. If there are not any errors in the PicoBlaze code, you will see a screen like the one below. If there are errors, you will be alerted with the line number to where the problem is in the code file (i.e., in the OWP.psm file) and prompted to fix the error before rerunning the assembler.
  4. Start the Xilinx ISE Project Navigator and open the file in "ise\OneWire\OneWire.xise" as shown below.
  5. Select the top level file in the design hierarchy (i.e., OneWire – PicoBlaze) in the Hierarchy pane and double-click on Generate Programming File.
  6. Confirm the hardware set of connections as defined in the "Set Up the S6LX9 MicroBoard" section. Start a Tera Term or HyperTerminal session with the serial port parameters set to your virtual COM port, 9600 baud rate, noparity, 8 bits, 1 stop bit, and no flow control.
  7. In the ISE graphical user interface (GUI), select Configure Target Device to download the FPGA design to the S6LX9 MicroBoard. The PicoBlaze application will immediately begin running upon the download completion.

Summary

This RD illustrates how to use the Xilinx PicoBlaze to interface with a DS28EA00 peripheral module. The RD also can be used as a starting point to interface to other 1-Wire slave devices.

1-Wire is a registered trademark of Maxim Integrated Products, Inc.
HyperTerminal is a registered trademark of Hilgraeve, Incorporated.
ISE is a registered trademark of Xilinx, Inc.
PicoBlaze is a trademark of Xilinx, Inc.
Pmod is a trademark of Digilent Inc.
Spartan is a registered trademark of Xilinx, Inc.
Windows is a registered trademark and registered service mark of Microsoft Corporation.
Windows XP is a registered trademark and registered service mark of Microsoft Corporation.
Xilinx is a registered trademark and registered service mark of Xilinx, Inc.

 
Status:
Package:
Temperature:

MAX31820PAR
1-Wire Parasite-Power, Ambient Temperature Sensor

  • Unique 1-Wire Interface Requires Only One Port Pin for Communication
  • Derives Power from Data Line (Parasite Power); No Local Power Supply Needed
  • Multidrop Capability Simplifies Distributed Temperature-Sensing Applications

MAX31820
1-Wire环境温度传感器

  • 独特的1-Wire接口仅占用一个端口引脚通信
  • 每个器件具有唯一的64位序列号,储存在片上ROM
  • 多点处理功能简化了分布式温度检测设计

MAX31826
带有1Kb可锁存EEPROM的1-Wire数字温度传感器

  • 独特的1-Wire接口仅需一个引脚进行通信
  • 集成温度传感器和EEPROM,减少元件数量
  • 多点通信简化多传感器系统设计

DS28EA00
1-Wire数字温度计,具有顺序检测和PIO

  • 数字温度计测量范围:-40°C至+85°C
  • 用户可选择的9至12位温度分辨率
  • 独特的1-Wire接口,仅需单个引脚即可进行通信

DS1990R
序列号iButton

  • 唯一的、由工厂激光刻录的64位注册码,保证无差错设备选择和绝对可溯性,因为没有任何两个元件是相同的
  • 内置多节点控制器适用于1-Wire网络
  • “一触即得”的数字识别方案

DS1825
分辨率可编程设置的1-Wire数字温度计,带有4位ID

  • 独特的1-Wire®接口,通信时只需要一个端口引脚
  • 每个器件具有唯一的64位序列号,存储在片内ROM中
  • 多点工作简化了分布式温度检测应用

  • DS2413
    1-Wire、双通道、可编址开关

    • 漏极开路可编程I/O引脚
    • PIO引脚支持20mA的最大持续吸电流
    • PIO引脚支持28V (最大)工作电压

    DS2431
    1024位1-Wire EEPROM

    • 1024位EEPROM存储器,分成四页,每页256位
    • 独立的存储区页,可以被永久写保护或进入EPROM仿真模式(“写入0”)
    • 切换点滞回与滤波可以在噪声下获得最佳性能

    DS2408
    1-Wire、8通道、可编址开关

    • 八通道开漏结构的可编程I/O
    • PIO下拉晶体管导通电阻100Ω (最大);关断电阻10MΩ (典型值)
    • 独立的事件锁存器捕获PIO输入口线上的异步状态变化以备总线主控查询

    DS18S20
    1-Wire寄生供电数字温度计

    • 独特的1-Wire®接口,通信只需要一个端口
    • 最大程度提高各种热管理应用的系统精度
    • 寄生供电模式只需要2个引脚即可工作(DQ和GND)

    DS2411
    硅序列号,带有VCC输入

    • 唯一的、由工厂光刻和测试的64位注册号(8位家族码、48位序列号和8位CRC校验),保证没有任何两个元件相同
    • 闲置电流低于1µA
    • 内置的多结点控制器允许多片DS2411共存于同一1-Wire网络

    DS1821
    可编程数字温度监控器和温度计

    • 无需外部元件
    • 独特的1-Wire接口只需一个端口用于数据通信
    • 工作温度范围:-55°C至+125°C (-67°F至+257°F)

    DS2401
    硅序列号

    • 与DS2400引脚兼容的升级产品
    • 工厂刻入、经过检测的64位注册码(8位家族码 + 48位序列码 + 8位CRC校验码);保证没有任何两个器件的注册码是相同的
    • 内部多点控制器确保与其他1-Wire网络产品兼容

    DS18S20-PAR
    寄生供电数字温度计

    • Unique 1-Wire Interface Requires Only One Port Pin for Communication
    • Derives Power from Data Line ("Parasite Power")—Does Not Need a Local Power Supply
    • Multi-Drop Capability Simplifies Distributed Temperature Sensing Applications

    DS18B20-PAR
    1-Wire寄生供电数字温度计

    • Unique 1-Wire Interface Requires Only One Port Pin for Communication
    • Derives Power from Data Line ("Parasite Power")—Does Not Need a Local Power Supply
    • Multi-Drop Capability Simplifies Distributed Temperature Sensing Applications

    DS18B20
    分辨率可编程设置的1-Wire数字温度计

    • 独特的1-Wire®接口仅占用一个通信端口
    • 内置温度传感器和EEPROM减少外部元件数量
    • 寄生供电模式下只需要2个操作引脚(DQ和GND)

    DS2406
    双通道、可编址开关与1K位存储器

    • 通过1-Wire总线,可以控制漏极开路PIO引脚和读入其逻辑电平状态,以实现闭环控制
    • DS2406除了没有用户可编程的上电设置及隐含模式外,引脚与DS2407完全兼容且可相互替换
    • 在输出为0.4V时,PIO通道A的吸流能力为50mA,带软启动导通;通道B的吸流能力为8mA

    DS1990A
    iButton序列号

    • 读取时间可在5ms以内
    • 工作范围:2.8V至6.0V,-40°C至+85°C
    iButton共性
    • 每个器件具有唯一的64位注册号,可保证准确无误的器件选择和绝对可溯性,因为不存在两个相同序列号的器件
    • 内置多点1-Wire网络控制器
    • 通过瞬间接触完成数字识别

    DS1920
    iButton温度记录仪

    • Digital Thermometer Measures Temperatures from -55°C to +100°C in Typically 0.2s
    • Zero Standby Power
    • 0.5°C Resolution, Digital Temperature Reading is Two's Complement of °C Value