Перейти к содержанию
    

LPC2148+FPGA как?

Вот даже незнаю, где спросить, тут или в ПЛИсах...

Суть проблемы - сопрячь LPC2148 c ПЛИСой (мелкий 3 Спартан) с максимальным быстродействием. В связи с отсутствием внешенй шины напрашиваеться применение SSP в качестве интерфейса. А теперь вопрос- требуется реализация на Veriloge или VHDL последовательного порта, макимально совместимого с филипсовским SSP ( с применением фифо и прочих фич). Обычный SPI, корки котророго уже найденны, слишком тормозит. Может кто встречал уже пример подобной реализации, а то обидно- скоростной интерфейс "гуляет".

Заодно выслушаю рекомендации по загрузке Спартана с АРМа ( как лучше хранить конфигурационный файл). Имеет ли смысл для этого добавить сериальный датафлеш в проект? Или хранить все внутри 2148 ( памяти жалко, но конфигурашка влазит), или грузить все по USB при старте устройства?

 

И как лучше развести jtagи - делать два раздельных? Если с АРМом все более-менее понятно, то с Хилинксом не очень- наверняка понадобиться хардверная отладка на этапе разработки (Сhipscope). Можно ли Чипскоп "протуннелировать" сквозь работающий USB АРМа ( прикинуться мульитдевайсом)?

Были ли проекты "клонирования" чипскопа с разборкой "по-косточкам" его протокола?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня в проетке LPC2148+CPLD, в CPLD 64 однобитовых регистра (в том числе лапы управления, статуса и т.д.), связь между LPC и CPLD по SPI, скорость 30МБит/сек, для того чтобы записать/прочитать регистр передается 1 байт, в котором первые 6 бит - адрес регистра, 1 бит - команда (запись/чтение), 1 бит данных. При чтении регистра на линии MISO первые 7 бит игнорируются, последний 1 бит принимается как бит данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тоесть и команда, и ответ идут в той самой транзакции? А обмен только короткими словами по 8 бит?

У меня ситуация несколько другая- необходимо передать блок данных более 1Кб. Т.е высылаеться команда на чтение (1 байт команды и два байта адреса, а потом принимаеться непрерывный поток).

Возможно и обратное- пакет высылаеться из 2148. Т.е желательно использование ФИФО. А поскольку мастером выступает lpc2148, то со стороны ПЛИС фифо должно быть асинхронным ( клоки у lpc2148 и Спартана разные). Опять же незнаю какой режим выбрать - SPI или совместимый с Техасом SSI. Какой из них лучше в плане стабильности?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тоесть и команда, и ответ идут в той самой транзакции? А обмен только короткими словами по 8 бит?

Да

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня LPC2138 + Cyclone 2 (Altera)

От использования SSP отказался, т.к. его выводы расположены неудачно.

А Вам в процессе приема-передачи еще нужно что-то делать ?

Если нет, то самодельный SPI (дерганье ножками у LPС) не намного медленнее чем аппаратный.

 

Оcновные плюсы SSP :

Hазгружать FIFO можно в обработчике прерывания, тем самым убрав передачу в фон.

Max clk = 1/2 pclk

 

Конфигурацию храню LPC.

Quartus генерирует ttf файл, которым удобно инициализировать const массив

 

const unsigned char PLD_cfg1[] = {

#include "cfg303_1.ttf"

};

 

в файле 3-х значные числа через запятую

для экономии можно написать простенький архиватор

 

У Xilinx должно быть нечто подобное

 

Кстати, если проблем с нехваткой ног нет, то можно параллельную шину организовать.

 

 

Удачи !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Так в этом же вопрос и состоит- что лучше. Симулировать параллельную шину на P1.16-P1.23 программно, или гонять SSP аппаратно. Принятые данные надо после небольшой обработки (собрать статистику) выслать в USB.

Проблем почти никаких нет после последенй ерраты ( изменение длины импульса SSP при высоки частотах). Осталось доработать под нее реализацию SSP в плисине и можно работать.

SSP.1Initial data bits/clocks of the SSP transmission are shorter than subsequent pulses at higher frequencies
Introduction: The SSP is a Synchronous Serial Port (SSP) controller capable of operation on a SPI, 4-wire SSI or a Microwire bus. The SSP can operate at a maximum speed of 30MHz and it referred to as SPI1 in the device documentation.
Problem:           At high SSP frequencies, it is found that the first four pulses are shorter than the subsequent pulses.
At 30MHz, the first pulse can be expected to be approximately 10ns shorter and the second pulse around 5ns shorter. The remaining two pulses are around 2ns shorter than subsequent pulses.
At 25MHz, the length of the first pulse would be around 7ns shorter. The subsequent three pulses are around 2ns shorter.
At 20MHz only the first pulse is affected and it is around 2ns shorter. All subsequent pulses are fine.
The deviation of the initial data bits/clocks will decrease as the SSP frequency decreases.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...