Giter Site home page Giter Site logo

rvalles / dbus_ti_link_uart_verilog Goto Github PK

View Code? Open in Web Editor NEW
10.0 5.0 0.0 65 KB

Verilog dbus (TI transfer bus) implementation and bridge to UART. High-performance link with TI calculators such as TI-89.

License: MIT License

Makefile 13.35% Verilog 86.65%

dbus_ti_link_uart_verilog's Introduction

Verilog UART to DBus (TI transfer bus, TI Link)

Use FPGA of choice to link a UART with a TI calculator.

ti86 with iCEstick

Features

  • Should work with all TI calculators featuring TI Link.
    • Tested with TI-89 (HW2) and TI Voyage 200 (HW2).
  • Fast. Faster than official cables. Fastest. Calculator as bottleneck.
    • ~77Kbit/s from TI-89 (HW2 stock) with FPGA running dbus at 8MHz.
  • Verilog 2005.
    • No dependency on vendor libraries.
    • Made for yosys+nextpnr open fpga flow.
    • Tested on iCE40 HX/LP/UP FPGAs.
  • Custom dbus and uart implementations.
  • Parametrized UART rate, DBus clock, buffer sizes.
  • Hardware flow control.
  • Ring FIFO buffer in both directions.
    • Buffer infers FPGA-specific dual port RAM.
  • Timeout (2s) on dbus bit transfer:
    • Signal error (ground both lines for ~300µs) and dbus reset.
  • MIT license. Refer to LICENSE file.

Tested FPGA boards

  • BlackIce Mx
    • No UART from stm32 as it is hardcoded to 115200 and doesn't do RTS/CTS.
  • iCEstick
  • iCESugar
    • This board builtin UART through stm32 does not do RTS/CTS.
    • UART limited to 57600bps as workaround.
  • TinyFPGA BX
  • (...)

Recommendations

  • TI-89, TI-92+ or Voyage 200 are fast enough to take advantage of this.
    • These calculators work reliably with dbus running higher than default, at 8+ MHz.
    • This is unnecessary. Performance benefits are negligible.
  • Be careful with FPGA i/o pin tolerance.
    • TI dbus is maintained at 3.3v with m68k calcs.
    • TI dbus is at 5v (!) on some z80 calcs, including TI-86.
  • Edit Makefile to uncomment or add fpga board.
  • Edit board PCF to suit board board and preference.
  • Preferably connect 2.5mm jack sleeve to GND rather than o_sleeve.
  • Use pullup resistors (10kΩ suggested) on dbus tip/ring.
  • Link68 pretty much just works:
  • If using tilp/libticables2:
  • If using TI official software:
    • Pretend it's a grey graphlink cable.
    • Use 9600bps, like a grey graphlink cable.

Caveats

  • tilp/libticables2 likes to send files in large packets.
    • Some devboards will only accomodate a limited size ring buffer to calculator, which will fill faster than can be sent.
    • Flow control takes care of it, and thus it is not an issue.
    • If uart flow control is not possible, workaround is to set a slower uart speed in Makefile and in libticables2.
      • 57600bps is slow enough for m68k calculator models.

TODO

  • Write some basic link software as an alternative to TILP.

Thanks

  • Tim Singer/Romain Liévin for TI-73...V200 protocol guide.

dbus_ti_link_uart_verilog's People

Contributors

rvalles avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.