«…лишь недалекие люди боятся конкуренции, а люди подлинного творчества ценят общение с каждым талантом…» А. Бек, Талант.

Co-Simulation/Описание макета

Материал из Wiki
Перейти к: навигация, поиск
Co-Simulation

Литература

* PSL * VHDL * OS-VVM *
Распиновка разъема A2

Содержание

Назначение выводов микросхемы FT232H

Назначение выводов микросхемы


FT232H pins used in an FT245 Synchronous FIFO Interface (стр. 15)

The FT232H can be configured as a FT245 synchronous FIFO interface. When configured in this mode, the pins used and the descriptions of the signals are shown in Table 3.7. To set this mode the external EEPROM must be set to 245 modes. A software command (FT_SetBitMode) is then sent by the application to the FTDI D2xx driver to tell the chip to enter 245 synchronous FIFO mode. В этом режиме запись или чтение данных происходит по положительному фронту синхросигнала CLKOUT. Refer to Figure 4.4 for timing details.


Table 3.7 FT245 Synchronous FIFO Configured Pin Descriptions
Pin No. Имя Тип Назначение
13,14,15,16, 17,18,19,20 ADBUS[7:0] I/O Двунаправленная шина данных FIFO [D7:D0]. Эта шина работает как вход, пока OE# в '0'.
21 RXF# OUT

Если '1', то данные из FIFO не читаются. Если '0', то данные в FIFO доступны, которые могут быть прочитаны подавая на RD# лог. '0'. Если в синхронном режиме, то данные передаются по каждому клоку, при RXF# и RD# равным '0'. Следует обратить внимание на то, что вывод OE# должен быть задан в '0' по крайней мере 1 период клока прежде задания RD# в '0'.

При логическом 0 указывает на наличие доступных для чтения данных в буфере TX

25 TXE# OUT

Если '1', то запрещена запись в FIFO. Если '0', то данные могут быть записаны в FIFO, задавая на WR# '0'. Если синхронный режим, то данные передаются по каждому клоку, при которым TXE# и WR# установлены в '0'.

При логическом 0 указывает на свободное место в приемном буфере RX. То есть данные могут быть записаны в буфер RX

26 RD# IN

Подаёт текущий байт данных FIFO на выводы D0...D7 при RD# равном '0'. Следующий байт данных FIFO (если доступен) устанавливается из приёмномого буфера FIFO каждый клок на CLKOUT пока RD# не станет равным '1'.

Сигнал чтения. При установке логического 0 разрешает передачу данных из FIFO на линии ADBUS[7:0]. Передача каждого следующего байта происходит по нарастающему фронту тактового сигнала на каждый такт, пока на вход RD# подается логический 0

27 WR# IN Enables the data byte on the D0...D7 pins to be written into the transmit FIFO buffer when WR# is low. The next FIFO data byte is written to the transmit FIFO buffer each CLKOUT cycle until WR# goes high.

Сигнал записи, при установке логического 0 разрешает запись в приемный буфер. Запись каждого следующего байта происходит по нарастающему фронту тактового сигнала на каждый такт, пока на вход WR# подается логический 0

28 SIWU# IN The Send Immediate / WakeUp signal combines two functions on a single pin. If USB is in suspend mode (PWREN# = 1) and remote wakeup is enabled in the EEPROM, strobing this pin low will cause the device to request a resume on the USB Bus. Normally, this can be used to wake up the Host PC. During normal operation (PWREN# = 0), if this pin is strobed low any data in the device RX buffer will be sent out over USB on the next Bulk-IN request from the drivers regardless of the pending packet size. This can be used to optimize USB transfer speed for some applications. Tie this pin to VCCIO if not used.

Сигнал “Send Immediate/WakeUp” имеет двойное назначение:

  • Если USB находится в режиме Suspend, что индицируется установкой PWREN# = 1, подача короткого импульса с низким активным уровнем приводит к возобновлению обмена по USB.
  • Если USB находится в обычном режиме (PWREN# = 0), подача короткого импульса с низким активным уровнем приводит к немедленной передаче данных в следующей транзакции, независимо от количества данных в буфере. В обычной ситуации данные будут передаваться только после приема всех 512 байт в буфер
29 CLKOUT OUT 60 MHz Clock driven from the chip. All signals should be synchronized to this clock.

Тактовый сигнал с частотой 60 МГц. Все управляющие сигналы должны быть синхронизированы с ним

30 OE# IN Output enable when low to drive data onto D0-7. This should be driven low at least 1 clock period before driving RD# low to allow for data buffer turn-around.

Сигнал управления направлением передачи по шине данных. Активный уровень — логический 0 — переводит шину в состояние «выход». В режиме чтения он должен быть установлен в активное состояние как минимум за один такт до установки в активное состояние сигнала RD#

For a functional description of this mode, please refer to section 4.4

FT245 Synchronous FIFO Interface Mode Description

FT245 Synchronous FIFO Interface Mode Description FT245 Synchronous FIFO Interface Mode Description


Задание режимов

ASYNC Serial UART STYLE ASYNC 245 FIFO SYNC 245 PARALLEL FIFO FT1248 ASYNC Bit-Bang SYNC Bit-Bang MPSSE Fast Serial Interface CPU-Style FIFO
EEPROM configured YES YES YES YES NO NO NO YES YES
Application Software configured NO NO YES NO YES YES YES RESET NO

4 Application Development

As shown in Table3.1, it is necessary to develop an application to access data under FT245 style Sync FIFO mode. In following section describes how to do this.

In the application code, it is firstly necessary to openPort A of the FT2232H.

Next send command FT_SetBitMode(Mask, 0x40) to the FTDI driver to switch the FT2232H to FT245 Synchronous FIFO mode (this mode uses the RX & TX buffer of port B, so port B cannot be used for any other purpose in this mode).

Then we can send command FT_SetLatencyTimer(ftHandle, latencytime) to the FTDI driver to configure latency time, which is the receive buffer timeout that is used to flush remaining data from the receive buffer. If you don’t call this command, the default setting is 16ms, it can be set at 1 ms intervals between 2ms and 255 ms.

The command FT_SetUSBParameters() can then be used to set the USB buffer size for the required data transfer. The buffer sizes must be set to a multiple of 64 bytes between 64 bytes and 64k bytes. The default size is 4KB. It is recommended changing this to 64KB.

Next the command, FT_SetFlowControl(), should to be called and parameter usFlowControl used to set FT_FLOW_RTS_CTS. This is configures the device driver to avoid data loss.

When the FT2232H has been set to FT245 Synchronous FIFO mode, the CLKOUT pin will output 60MHz a clock. Observing this with an oscilloscope is a good check to make sure the interface has entered FT245 Synchronous FIFO mode. If the waveform edges do not appear sharp enough, then the drive strength of the IO can be increased by altering the EEPROM values using MPROG or FT_PROG.

Although the RX and TX buffers are 4KB, they only use 2x 512 bytes for each buffer under FT245 Synchronous FIFO mode (maximum USB2.0 packet size under BULK mode is 512 bytes). The two buffers continually swap between each other to increase the performance.

To use the software commands, it is necessary to download the ftd2xx.dll, ftd2xx.lib, ftd2xx.h from the FTDI CDM driver. Details are available in the following programmers guide on how to use the software commands D2XX_Programmer's_Guide(FT_000071).pdf.

из статьи

Работа микросхемы в режиме синхронного FIFO осуществляется под управлением драйвера D2xx в установленном для канала А режиме FT245 FIFO. Других специальных аппаратных настроек в общем случае не требуется. Дальнейшая настройка режима синхронного FIFO осуществляется программно, с помощью команды FT_SetBitMode (ftHandle, 0x40). Завершение установки режима можно проконтролировать визуально, с помощью осциллографа, наблюдая тактовый сигнал с частотой 60 МГц на выводе ?? (CLKOUT) микросхемы.

// Определение подключенных устройств FTDI, выбор требуемого (в данном примере — канал А модуля FT2232H Mini Module) и установление с ним обмена
 
ftStatus=FT_ListDevices(&numDevs,NULL,FT_LIST_NUMBER_ONLY);
 
 if(ftStatus==FT_OK)
	 {
		 ftStatus = FT_OpenEx(“FT2232H MiniModule A”,FT_OPEN_BY_DESCRIPTION,&ftHandle); // данная функция открывает одно из 
// подключенных к ПК устройств FTDI по его названию, в данном случае канал A микросхемы FT2232H,
	 }
 
 else
	 {
		 // обработка ошибок
	 }
// Установка выбранного режима работы моста, следующая последовательность команд настраивает мост для работы в
// режиме синхронного FIFO
 
 ftStatus = FT_SetBitMode(ftHandle, 0xff, 0x00); // сброс настроек перед установкой выбранного режима работы
 
 Sleep(10);
 
 ftStatus = FT_SetBitMode(ftHandle, 0xff, 0x40); // команда выбора режима работы моста, значение 0x40 соответствует режиму Sync FIFO
 
 if (ftStatus == FT_OK)
		 {
 ftStatus = FT_SetUSBParameters(ftHandle,1024,1024);
// выбор размера USB-буферов, по умолчанию равен 4 кбайт,
// в высокоскоростном режиме передачи рекомендуется устанавливать размер 64 кбайт.
 ftStatus = FT_SetFlowControl(ftHandle,FT_FLOW_RTS_CTS,0x10,0x13); // Использование данной команды в приведенном формате
                                                                   // предотвращает возможную потерю данных.
		 }
 else
		 {
		 // обработка ошибок
		 }

Плата USB контроллера

Lite-headers.png

GPIO Header 1

Lite-p1.png

These pins are either power pins or directly connected to GPIO pins of FT232H.

Pin # Description
1, 2 GND
3, 4 +3.3V of TUMPA Lite's onboard LDO output.
5, 6 +5V output (From USB power)
7, 8 RESET (active low)
9, 10 AC9
11, 12 AC8
13, 14 AC7
15, 16 AC6
17, 18 AC5
19, 20 AC4
21, 22 AC3
23, 24 AC2
25, 26 AC1
27, 28 AC0

bold & italic indicates FT232H pins.


GPIO Header 2

Lite-p2.png

These pins are either power pins or directly connected to GPIO pins of FT232H.

Pin # Description
1, 2 GND
3, 4 +3.3V of TUMPA Lite's onboard LDO output.
5, 6 +3.3V of TUMPA Lite's onboard LDO output.
7, 8 +5V output (from USB)
9, 10 +5V output (from USB)
11, 12 GND
13, 14 AD0
15, 16 AD1
17, 18 AD2
19, 20 AD3
21, 22 AD4
23, 24 AD5
25, 26 AD6
27, 28 AD7

bold & italic indicates FT232H pins.


Таблица соответствия выводов

Pin # Pin Name ASYNC Serial (RS232)
SYNC 245 FIFO
Плата

Pin #

Плата

Pin Name

Spartan-3 StarterKit

Pin # в разъёме

Spartan-3

Pin Name







1, 2 GND 1






3, 4 +3.3V of TUMPA Lite's onboard LDO output.







5, 6 +3.3V of TUMPA Lite's onboard LDO output.







7, 8 +5V output (from USB)







9, 10 +5V output (from USB)







11, 12 GND 1
13 ADBUS0 TXD OUT D0 I/O 13, 14 AD0 12 C8
14 ADBUS1 RXD IN D1 I/O 15, 16 AD1 14 C9
15 ADBUS2 RTS# OUT D2 I/O 17, 18 AD2 16 A3
16 ADBUS3 CTS# IN D3 I/O 19, 20 AD3 18 A4
17 ADBUS4 DTR# OUT D4 I/O 21, 22 AD4 20 A5
18 ADBUS5 DSR# IN D5 I/O 23, 24 AD5 22 B7
19 ADBUS6 DCD# IN D6 I/O 25, 26 AD6 24 B8
20 ADBUS7 RI# IN D7 I/O 27, 28 AD7 26 A9
21 ACBUS0 TXDEN* OUT RXF# OUT 27, 28 AC0 25 A8
25 ACBUS1 ACBUS1**
TXE# OUT 25, 26 AC1 23 A7
26 ACBUS2 ACBUS2**
RD# IN 23, 24 AC2 21 B6
27 ACBUS3 RXLED#* OUT WR# IN 21, 22 AC3 19 B5
28 ACBUS4 TXLED#* OUT SIWU# IN 19, 20 AC4 17 B4
29 ACBUS5 ACBUS5**
CLKOUT OUT 17, 18 AC5 15 D10
30 ACBUS6 ACBUS6**
OE# IN 15, 16 AC6 13 D8
31 ACBUS7 PWRSAV# IN PWRSAV# IN 13, 14 AC7 11 D7
32 ACBUS8 ACBUS8**
ACBUS8**
11, 12 AC8 9 E7
33 ACBUS9 ACBUS9**
ACBUS9**
9, 10 AC9 7 D6






7, 8 RESET (active low) 5 D5






5, 6 +5V output (From USB power)







3, 4 +3.3V of TUMPA Lite's onboard LDO output.







1, 2 GND 1

Проверка платы

1. Следует определить PID и VID, с которыми определяется плата. В линуксе можно посмотреть выдачу команды dmesg после подключения устройства к ПК. В виндовсе есть программа USBView, есть на сайте FTDI.

2. Если VID и PID стандартные 403 и 6001-6015 то можно переходить к установке стандартных драйверов. В моём случае PID был равен 8a99, поэтому драйвера не находились для такого устройства. В документации на FTDI рекомендуется в этом случае добавить такой PID в драйвер или перешить PID в EEPROM на плате. Я изменил файл ftdibus.inf в папке с драйверами, продублировав строку с PID_6015 с моим значением (дублировать строку в 3х местах). После этого снова подключил устройство и инициировал установку драйвера. После его установки запустил програму для программирования EEPROM на плате и задал PID по умолчанию и перепрограммировал память. После этого доставил драйвер на виртуальный COM порт.

3. Далее задал режим UART (запрограммировал память на плате)

4. С помощью проводков, идущих в комплекте, соединил следующие выводы для обеспечения режима "ЭХО":

  • AD0 соединён с AD1
  • 3V3 (3-4) соединён с AС0
  • 3V3 (5-6) соединён с AС7

5. Для проверки в линукс

  • Скомпилированы драйвера в ядре линукс поддержки FTDI
  • В терминале (CuteCom в линукс) открыт порт /dev/ttyUSB0 и проверяется "ЭХО" на разных скоростях (работало до максимальной ~900кБит)

Driver для платы

Драйвер для платы нужно брать по ссылке с сайта производителя платы, так как задан специфический PID (0x8A99), то стандартный драйвер FTDI не устанавливается.

NEW

Ccылки

libFTDI is an open source library to talk to FTDI chips: FT232BM, FT245BM, FT2232C, FT2232D, FT245R and FT232H including the popular bitbang mode. The library is linked with your program in userspace, no kernel driver required.
libFTDI works perfectly with Linux, Windows, MacOS X and BSD variants thanks to libusb.