Kart/professor

From FSI
(Difference between revisions)
Jump to: navigation, search
(Status register)
(HTTP 301)
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{private}}
+
#REDIRECT [[Kart]]
{{TOC right}}
+
 
+
== FPGA boards ==
+
 
+
The FPGA modules use MicroSemi [http://www.actel.com/products/igloo/ IGLOO] low-power FPGAs.
+
 
+
The boards have been designed for AGL125 in a VQ100 package.
+
However, it is possible to mount the following devices with the same package on that board:
+
* AGL060: 1'536 VersaTiles, 4 4'608-bit RAMs
+
* AGL125: 3'072 VersaTiles, 8 4'608-bit RAMs
+
* AGL250: 6'144 VersaTiles, 8 4'608-bit RAMs
+
One VersaTile can implement a 3-input combinatorial function or an E-flipflop.
+
 
+
=== Pin Compatibility ===
+
As a simple compatibility rule for these devices, one should use:
+
* pins 43, 60, 93 and 94 for I/Os but not as a clock inputs
+
* pin 99 tied to GNDQ
+
* pin 100 tied to VMV0 (3.3 V)
+
 
+
=== Global Clock Networks ===
+
Note that pin names starting with '''GF''' and '''GC''' are associated with the chip global networks, and GA, GB, GD, and GE are used for quadrant global networks.
+
 
+
In case of the AGL060 - AGL250 the following pins are truly Global Clocks.
+
* pins 10, 11, 13, 15, 16 for Network GF
+
* pins 61, 62, 63, 64, 65 for Network GC
+
 
+
== Synthesis results ==
+
 
+
The device usage gives an idea if the synthesis has worked properly.
+
Here the results for the AGLN125V5:
+
* [[Kart/Bluetooth|controller]]: 40 % + 2 Block RAMs, 64 % + 6 Block RAMs with the (1024 steps) sequencer
+
* [[Kart/DC motor controller#FPGA design|DC motor]]: 13 %
+
* [[Kart/stepper motor controller#FPGA design|stepper motor]]: 25 %
+
* [[Kart/sensor board#FPGA design|I/O board]]: 36 %
+
 
+
== Sequencer ==
+
 
+
The sequencer allows to store and play a special move specified by a sequence of commands.
+
 
+
=== SmartPhone to Kart ===
+
 
+
{| cellpadding="4" cellspacing="0" border="1"
+
! Address
+
! Datatype
+
! Description
+
|-
+
| 7
+
| UINT2
+
| Control register
+
|-
+
| 8
+
| UINT16
+
| Sequence register
+
|}
+
 
+
==== Control register ====
+
 
+
{| cellpadding="4" cellspacing="0" border="1"
+
! Bit
+
! Meaning
+
! Description
+
|-
+
| 0
+
| Reset sequence
+
| sets the sequence RAM write and read addresses back to 0
+
|-
+
| 1
+
| Run / stop
+
| starts or stops a sequence
+
|}
+
 
+
==== Sequence register ====
+
 
+
The sequence memory is made out of 16-bit controls and the sequence can range up to 2<sup>10</sup> operations.
+
From the communication point of view, the sequence memory is seen as a FIFO&nbsp;:
+
the sequence operations are pushed one after the other into the sequence register,
+
starting at the first one of the list after the <code>reset sequence</code> bit
+
has been set in the [[#Control register|control register]]
+
 
+
The sequence operations are split into 2&nbsp;parts: a 4-bit command and optional parameters.
+
A sequence register has been defined in order to build loops:
+
the <code>goto</code> operation is only carried out if the register is not zero.
+
The register is initialised with all bits to&nbsp;'1'.
+
 
+
{| cellpadding="4" cellspacing="0" border="1"
+
|
+
! colspan = "2" | command
+
! parameter
+
| comment
+
|-
+
| Bits
+
! colspan = "2" | 15 ÷ 12
+
! 11 ÷ 0
+
|
+
|-
+
| rowspan = "13" | || 0 || nop || ||
+
|-
+
| 1 || set speed || speed || set the propulsion motor speed
+
|-
+
| 2 || set angle || angle || set the direction motor angle
+
|-
+
| 3 || drive LEDs || pattern || specify a given pattern for turning the LEDs on or off
+
|-
+
| 4 || set LEDs || mask || set bits from '1's of mask
+
|-
+
| 5 || clear LEDs || mask || clear bits from '1's of mask
+
|-
+
| 6 || blink LEDs || period, mask || ''not implemented yet''
+
|-
+
| 8 || run distance || hall ticks || run until the Hall counter has augmented by at least a given tick number
+
|-
+
| 9 || run for || milliseconds || run for a specified time span
+
|-
+
| A || run until || event || ''not implemented yet''
+
|-
+
| D || modify register || operation, operand || bits 11÷10 : 00 = set, 10 = add, 11 = sub / bits 9÷0 : operand
+
|-
+
| E || goto nz || address || jumps to the specified sequence step as long as the register is not zero
+
|-
+
| F || end || || the sequence controller in the FPGA stops and the <code>running</code> status bit is cleared, announcing that the sequence is terminated
+
|}
+
 
+
=== Kart to SmartPhone ===
+
 
+
{| cellpadding="4" cellspacing="0" border="1"
+
! Address
+
! Datatype
+
! Description
+
|-
+
| 7
+
| UINT16
+
| status
+
|}
+
 
+
==== Status register ====
+
 
+
{| cellpadding="4" cellspacing="0" border="1"
+
! Bit
+
! Meaning
+
! Description
+
|-
+
| 15 ÷ 12
+
| Current command
+
| indicates which command is currently being processed
+
|-
+
| 0
+
| Running
+
| indicates that a sequence is currently running
+
|}
+
  
 
[[Category:Kart]]
 
[[Category:Kart]]

Latest revision as of 20:36, 17 September 2024

  1. REDIRECT Kart
Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox