![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
Beby
Свой-
Постов
662 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Весь контент Beby
-
А получится компенсация задержки IBUFG и (OBUF + Troute delay) - вроде компенсация вашей задержки содиться к этому, как я понял: Если же я вас понял неверно, то опишите подробно, что и зачам вам необходимо.
-
пожалуйста, вот она, изучайте на здоровье - буду рад, если она сможет еще в каком-нибудь месте послужить обороноспособности нашей великой Родины: Чтобы не возникало подобных вопросов я привел СВОЮ постановку задачи для СВОЕЙ схемы. У вас другая задача ? - Если да, то и делайте по другому. Дальнейшие дискусии на тему "А почему нет входа того-то ?" или "А что будет если оторвать выход такой-то" считаю нецелесообразными. Вместо XOR вы можете ставить все что, вам больше понравиться или лучше подойдет к вашей конкретной задачи. А при том, что решения работают устойчиво на предельных частотах ПЛИС, ТОЛЬКО если вы учитываете аппаратные особености ПЛИС. (Надеюсь это не вызывает сомнений ?) XOR - для XPLA3 аппаратный, и, как я писал выше, обладает некоторыми очень интересными (для меня) особенностями - коими я и воспользовался, городя эту схему. Ведь не забывайте, этот элемент работает не на ТАКТОВОЙ частоте, а часто он вынужден на входе своем иметь ВЧ колебания триггера F1_D0. (кстати LUT'ов XPLA3 не имела и иметь не собирается) Я работаю в областях очень чувствительных к сбоям техники - поэтому применяю решения не легко читаемые, а безотказные. Поделились с вами хорошей схемой - радутесь. Не нравиться - не используй. А что на куда и каким образом легло в ПЛИС это уже мое дело.
-
XOR использовался в XPLA3 (там он аппаратный XOR с своими специфическими свойствами). А в FPGA (Spartan-IIE) я плотно обкладываю RLOC'ом все узлы и схемы синхронизыции (строки с RLOC я вырезал из предоставленного исходника, чтобы не загромождать код). Ну я не программист... Без эксперимента (т.е. по теоретическим выкладкам) я не могу сказать будет ли какая-либо метастабильная схема работать на "больших" частотах в ПЛИС - поэтому без экспериментов - никуда (только ведь эксперименты разные бывают...)
-
А XOR потому, что: Как вы должны догадываться, эта выложенная схема, далеко не первая, а результат последовательной оптимизации ряда схем, в т.ч. гибрида схемы leevv(#29) + что-то вроде Alex_vod(#2) - 4 триггера, время реакции не менее 3T CLK2, время релаксации не менее 4T CLK2, по моему в моей схеме с этим получше, а? Насколько я изучил ПЛИС, логика в них работает как фильтр нижних частот, т.е. ее конечное быстродействие несколько ниже, чем у триггера. А при метостабильном состоянии у триггера на выходе достаточно высокочастотные колебания, которые в чистом виде через логику пройти не могут. Но это пол дела. В добавок в моей схеме, у триггера F2_FD1 заложено время на выход из метастабильного режима = 1T CLK2 - (Troutes delay + Txor delay). Если для вас этого мало - модифицируйте схему под свои нужды. Но все-таки: А время тестирования БСС это не 2 минуты и не час. БСС-1 только в захват застоты входит несколько чавов, а затем его еще и тестируют, как он "фильтрует" эту захваченную частоту, со своей-то постоянной времени. Если бы эта схема глючила в ПЛИС, то это было бы видно - уж поверьте. Тем более зависнуть!
-
Ну вот и они так подумали, и в Spartan-2E добавили еще 4 входных буффера для обратных связей DLL. Вы может воспользоваться схемой с Figure 10 (в точности). Или, если вам необходимо по каким-то причинам внутреннуй CLK сдвинуть на опережение входного (ровно на задержку выходного буфера + трассировочных ресурсов), то возьмите только один DLL (по Figure 10 верхний из двух) и вставьте BUFG (от которого питаются внутренние узлы ПЛИС) в ответвление перед OBUF. Но мне все равно как-то не понятно зачем это надо. Поэтому не могу подсказать точное решение. А если учесть, что DLL добавляет jitter (для некоторых систем неприемлемо большой), то совсем становиться не интересно. Если у вас не выйдет желаемое, попробуйте подробней описать, что и главное зачем вам недо. Я не знаю в курсе вы или нет: FPGA editor, может добавлять тестовые выходы различных сигналов ПЛИС на выходные ножки (указывая при этом задержку от источника сигнала до выходного блока, при +25С), разводка ПЛИС при этом не меняется, что позволяет отлаживать тяжелые случаи. Может еще где и пригодится эта методика.
-
Извиняюсь за битую ссылку, привильная http://direct.xilinx.com/bvdocs/appnotes/xapp174.pdf
-
Мне не очень понятна ситуация с которой вы боретесь, опишите ее по подробнее. (откуда взялся Clock и через куда его пропустили) Посмотрите http://direct.xilinx.com/bvdocs/publications/xapp174.pdf (Using DLL in Spartan-II FPGAs) - вотзможно он вас наведет на решение вашей проблеммы. Если я правильно понял, то подобный вашему случай изображен на Figure 11: DLL Deskew ob Board Level Clock Between Multiple Startan-II Devices.
-
С Altera не работаю, архиректуру Cyclone II не представляю. Но ловил подобный глюк в Spartan-IIE при GCLK более 200 МГц. Дело было исправлено добавлением к каждому блокировочному конденсатору 0.1 мкФ (Murata X7R) еще и 0.01 мкФ (Murata X7R). После этого все стало работать нормально. В том проекте 0.1 мкФ конденсаторы стояли на каждой ноге питания ПЛИС. В описании конденсаторов Murata для X7R обнуружил, что конденсаторы 0.1 мкФ более или менее хорошо работают на частотах до 20 МГц. Хоть у Вас частота только 60 Мгц, но все-же может быть дело с блокировочными конденсаторами (?), попробуйте - дорого не выйдет. Если вы применяете Y5V конденсаторы, то может быть поможет такая наводка: у некоторых из Y5V мы обнаруживали пъезо эффект, т.е. любой удар по плате отзывается небольшим броском напряжения - очень забавно выглядит при просмотре данных с 12-разрядного АЦП, оцифровывающего высокостабильное постоянное напряжение. Если ваше устройство работаете в условиях вибраций... то в таком случае итог будет печален. Может конечно, дело еще в чем-то...
-
Я для приема данных использу FIFO, в случае когда данных очень много оно организуется на двух внешних ОЗУ'шках (одну читает потребитель, и пока она полностью не прочитанна, в другую пишет источник данных), если ОЗУ надо мало, то вполне для FIFO подходит и блоки внутреннего ОЗУ. Как работают счетчики на запись/чтение данных в/из FIFO - зависит от конкретной задачи. Главное, что блок синхронизации я применяю один и тот же. Идея блока такова: Есть CLK_1 и есть некое событие, на которое надо отреагировать импульсом длинной в один такт на CLK_2. Наличие события кодируется импульсом, длинной в один такт CLK_1 на линии START. Исходник блока синхронизации (разработал сам): library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity sync_clk is port ( START: in std_logic; CLK_1: in std_logic; CLK_2: in std_logic; Q: out std_logic ); end entity; architecture sync_clk_body of sync_clk is signal F1_FD0: std_logic := '0'; signal F2_FD1: std_logic := '0'; signal F2_FD2: std_logic := '0'; begin process (CLK_1, F2_FD2) begin if F2_FD2 = '1' then F1_FD0 <= '0'; elsif rising_edge(CLK_1) then if (START = '1') then F1_FD0 <= '1'; end if; end if; end process; process (CLK_2) begin if rising_edge(CLK_2) then F2_FD1 <= F1_FD0; F2_FD2 <= F2_FD1 xor F2_FD2; end if; end process; Q <= F2_FD2; end architecture; Эта схема используется в (БСС) Блоках Сетевой Синхронизации Первого и Второго "сортов" в STM (телефонии). За все время тестирований и измерений ни разу не пропустила ни одного импульса. (любой пропушенный умпульс, в данных системах, тут же отзывется плавным, но быстрым, набегом фазы на 1 такт) В БСС второго сорта схема закатана в XCR3256-7TQ144. Работает с частотами около 131.072 МГЦ (практически на предельном быстродействии XPLA3). В Spartan-2E в менее скоростной задачи, за год эксплуатации пока тоже сбоев не обнаружено.
-
Желательно уточнить тип ПЛИС к которой отностися вопрос. Выводить можно, только надо учитывать несколько неприятных моментов: 1. В ПЛИС с которыми я работал нет "прямого" пути дял Global Clock на вход I в I/O Block, тогда имплементатор пропускает Global Clock через несколько коммутаторов, добавляя, тем самым, некоторую (в общем случае неодинаковую) транспортную задержку. Если у вас несколько выходов с этим Global Clock, то желательно довавить соответствующий Constaint (у Xilinx это Skew). 2. Видел я какой-то XAPP (найти его сейчас не смог), там была применена такая идея: Global Clock не может быстро попасть на на вход I в I/O Block, но может попасть на вход OCLK в I/O Block и быстро, и синхронно с остальными выходами. Тогда можно запитать в ПЛИС с DDR выходом этим клоком DDR коммутатор, который будет мультиплексировать две константы '1' и '0', эмулируя, тем самым, выход Global Clock. 3. При работе ФАПЧ неизбежно появляется jitter. Если PLL цифровой, то jitter может быть весьма "большим" (в десятки пикосекунд) - что для некоторых высокоточных задач - неприемлемо.
-
Очень интересно, а какая у вас версия среды разработки ? (Я пока с таким не сталкивался, но ведь явно прийдется) Тут извиняюсь - Spartan-3 не заметил - совсем ослеп на молодости лет.
-
Для Spartan-II я отличий не обнаружил, когда применял сам. Ссылка, которую вы указали на Spartan-3 в явном виде не распростроняется, поэтому посмотрите на вот такой документ: [http://direct.xilinx.com/bvdocs/userguides/ug332.pdf] (Spartan-3 Generation Configuration User Guide) - Spartan -3A, Spartan-3E, and Spartan-3 FPGA Families (with ISE 8.2.03i Design Examples). Может этот документ Вам поможет. Часто при загрузке полупустой не сжатой прошивки в ПЛИС, не требуется дополнительных 8 CCLK для Startup Sequence, поэтому про эти 8 импульсов часто забывают - может это как раз Ваш случай ? Все может быть, но если я правильно помню, в обоих случаях MSB для *.bin файла в архитектуре x86 является D7.
-
Если не ошибаюсь, то 'currently' было в декабре 1999. Могло и поменяться, не даром Xilinx поставила это слово. Нехорошо перечить админу, посему высылаю файл прошивки для Spartan-2E и программу, написанную для загрузки оной через CPLD стоящую на ISA (*.bin - сгенерирован на ISE 7.1, *.cpp слеплен на BC 3.1). Естествено все это работало, и даже неплохо. По синхронизационным кодам в *.bin файле можно точно сказать, где лег MSB, а *.cpp запихивает MSB(в смысле x86) в ПЛИС первым. Если чего не так, поправьте меня. TEST.RAR
-
Попробуйте посмотреть, что твориться с напряжениеми и токами, потребляемыми во всех 3 типах питанях, при запуске вашего устройства. В Spartan-II, супервизор отсутствует, и при подачи Vcc до Vint, мог протекать заметный ток по Vcc (до нескольких ампер, что завизит от колическова IOB), из-за того, что состояние управлющих ключей при отсутсвии Vint - хаотично и непредскачуемо.
-
О каком дисбалансе и неоптимальности идет речь, если можно дайте ссылочку на литературу (очень неудобно себя чувствовать, когда не понимаешь детально как именно работает группа ног ПЛИС, а надо применять эти знания). В моем случае практически то же, ПЛИС работают с клиентами LVTTL, корписа PQ, поэтому оба банка IO имеют VCC = 3.3V. Спасибо за овтет.
-
Для Spartan-II в режиме SerialSlave биты действительно надо задвигать начиная со старшего бита байта. Со Spartan-3 еще не успел поиметь дел, поэтому ничего точно сказать не могу. Возможно имелся ввиду "Figure 4: Waveforms for Master and Slave Serial Configuration" (под официальным номером DS099-3_05_041103 - лучше указывать этот номер, в нем все сказанно: что, откуда и какой версии). У Xilinx был принят мелкий стандартик: начинать прошивку (файл *.bin) с кода 0xFFFFFFFF - это команда простоя для ПЛИС. Очень выжно, чтобы до окончания стирания ОЗУ в ПЛИС (пока еще INIT = 0), на DIN появилась устойчивая единица, тогда даже при наличии лишних CCLK в ПЛИС будут записывать комманда простоя, непосредственно загрузка ПЛИС начинается с того момента, как в последовательном потоке будет обнаружена подходящая комманда (отличная от 0xFFFFFFFF). В Spartan-II не требовалось никаких лишних CCLK, т.е. с первого же положительного фронта фиксировался бит данных. В пасивном состоянии CCLK необходимо было держать в '1'. Я думаю, что и в Spartan-3 Xilinx не отошел от прошлых нароботок, ибо это никак не отражено в документации. И еще, почему-то для Spartan-3 Xilinx советует держать ноги CS_B и WRITE_B в '1' - может в этом дело в вашем случае? От подтяжки Done можно и отказаться, но надо тогда поставить флажок Drive_Done_HIGH, так и стабильней, и резистор не нужен.
-
Помощь новичку...
Beby ответил zorromen тема в Работаем с ПЛИС, области применения, выбор
Удобство среды - понятие сугубо субъективное, в Xilinx мне нравиться наличие FPGA Editor, которым можно детально посмотреть (вплоть до ключа), как и что легло в FPGA - иногда это сильно помогает при освоении плис, или при попытках заставить ПЛИС работать на предельных частотах. Для этого лучше FPGA (CPLD для "сложных логических схем" дороговато выйдет). Например Startan2. Для обоих типов ПЛИС это реально, но только необходимо поставить блокировочные конденсаторы на каждую ногу питания. ТТЛ - понятие растяжимое: с каким именно ТТЛ: TTL 5V, LVTTL (3.3 V), LVTTL_2.5 и т.п. С TTL 5V, работают только старые ПЛИС, которые или уже сняты с производства, или находятся под постоянной угрозой этого. Поэтому лучше в системе использовать LVTTL (3.3 V) - практически все ПЛИС пока еще с ним работает. Дело в том, что по хорошему надо уметь работать и с CPLD, и с FPGA. У этих семейств существенно разные потроха, и поэтому, при компиляции, возникает нехватка принципиально разных ресурсов. Советую заложить оба типа ПЛИС на плату и разобраться с обоими. Из CPLD, как я и говорил ранее, советую CoolRunner (XPLA3). Официальный дистрибьютор фирмы Xilinx в России, Украине, Беларуси: [http://www.plis.ru/page.php?id=8] Для украины: ООО ПУЛЬСАР 49030, Днепропетровск Ул. Рогалева, 9 Тел.: +38 (0562) 38-90-28 E-mail: [email protected] http://www.pulsar.org.ua ООО "Сканти" Киев Пр.Воссоединения, 7-а, офис 726 Тел.: +380443320336 Факс: +380442545978 Email: [email protected] Если ПЛИС Xilinx, то для быстроты освоения прочитайте русские описания выложенные на [http://www.plis.ru/page.php?id=5]. Если будете у них покупать ПЛИС, то выпросите бесплатный диск с Xilin ISE WebPack, раньше на этих дисках имелать гора документации, в т.ч. и на русском (причем последней было больше, чем на самом сайте компании). У среды разработки Xilinx ISE есть документ QuickStart - объясняющий основы работы. Выбор языка программирования (Verilog или VHDL - это также, как и выбор Altera/Xilinx). Хоть я сам работаю на VHDL, советовал бы начать с Verilog - обычно, на нем основные конструкции компактнее. А на VHDL можно писать очень хитрые, динамически генерируемые Constraint (этого на Verilog нашей бригаде не удалось), но обычно это и не нужно. Обязательно запаситесь стандартами языков, рано или поздно они все-равно понадобятся. -
В Spartan-3A опять появилась поддержка LVPECL-3.3V, но только приемной стороны. Насколько я понимаю, несмотря на то, что для Virtex-E и Spatran-IIE была заявлена поддержка выходного каскада LVPECL, как таковой ее не было. А было предложено решение, как при помоши 3 резисторов превратить пару выходов (очень похожую на LVTTL или LVCMOP) в подобие LVPECL (на то, что это был не чистый LVPECL, указывает некоторое количество мути вокруг ответа на вопрос: "Насколько Xilinx LVPECL, соответствует National Semiconductor LVPECL ?"). Имеется хитро задуманный модульный комплекс, реализованный на Virtex-E и Spatran-IIE. Несколько шин реализовано с элеккрическим стандартов Xilinx LVPECL. Все приемники/передатчики это Virtex-E и Spatran-IIE. Хочеться постепенно перевести проект на Spartan-3A. Изменять электрический стандарт шин очень нехочется, т.к. это приведет не к постепенной эволюции комплекса, а революции, коия совсем не интересна заказчику. Тепер вопросы: 1. Возможно ли, использовать схемотехническое решение от Virtex-E (XAPP133.PDF) для Spartan-3A ? И если да, то какие должны быть настройки у выходного буфера ? (пока я предпологаю, что Xilinx LVPECL - это два LVTTL 12mA). 2. В чем глубинный смысл жестко закрепленных пар IOB для одного диф. выхода у Virtex-E и Spatran-IIE ? И можно ли использовать любые выходные ножки под диф. выход, если clock постурает на триггеры этих IOB с малой разбежкой фронтов (напри мер менее 1.0 ps или 0.1 ps) ?
-
Помощь новичку...
Beby ответил zorromen тема в Работаем с ПЛИС, области применения, выбор
Все зависит от того, насколько точно вы повторили мк51. Можно, но наверное лучше воспользоваться уже готовыми ядрами. У Alter'ы есть NIUS, если я не ошибаюсь, то его даже некоторые Unix'соиды поддерживают (пуcть меня поправят если я ошибаюсь). У Xilinx есть PicoBlase, MicroBlase. Если взять ПЛИС Virtex-II Pro, то в ней есть до 4 ядер PowerPC (заложенных аппаратно). Для познания процессоров Xilinx, ознакомьтесь с возможностями Xilinx EDK. Можно. Наверное, в вашем случае, это будет оптимальным вариантом, по трудозатратам на разработку. А для некоторых задач "вывода на экран", может хватить и внутреннего двухпортового ОЗУ FPGA (сейчас его в них много). -
Помощь новичку...
Beby ответил zorromen тема в Работаем с ПЛИС, области применения, выбор
Можно, но CPLD имеют достаточно убогую внутренную архитектуру; если хочется взять ПЛИС типа FPGA, но с Flash памятью, просмотрите на изделия фирмы Actel; насколько я помню у Alter'ы было интересное семейство CPLD, в которых чаcть конфигурационной Flash пямяти, можно использовать как памать пользователя (и не ставить внешную flash'ку для сохранения каких-либо параметров устройства). Впринципе, у каждого производителя ПЛИС, есть свой продукт для этого (например Xilinx предлагает Chip Scope Pro). Я пользуюсь Aldec AHDL 7.1 (на ftp он должен быть - точно я не знаю, сейчас я доступ туде пока не имею) - это графическая среда моделирования/описания проекта (она поддерживает очень много производителей ПЛИС, вот только не все они спешат поддерживать AHDL). Основной инструмент это осциллограф (или логический анализартор - зависит от решаемой проблемы). Вообще-то через него возможно заниматься и отладкой проекта. Для ПЛИС Xilinx ознакомьтесь с разделом Boundary Scan - он был к каждом описании FPGA. -
Помощь новичку...
Beby ответил zorromen тема в Работаем с ПЛИС, области применения, выбор
А можно и мне? :) Можно, я не жадный. Файл позаимствован с ISE WebPack 6.3, диск распростронялся InlineGroup (www.plis.ru) После прочтения русского вырианта, настоятельно рекомендую сравнить все числовые значения параметров с англоязычным оригиналом документа DS012.PDF. xpla3_rus.rar -
Помощь новичку...
Beby ответил zorromen тема в Работаем с ПЛИС, области применения, выбор
Если начинать разбираться с ПЛИС Xilinx, то я советую начать с семейства CoolRunner (для CPLD) или Startan-II / Startan-3 (для FPGA). Документацию, переведенную на русский язык, можно взять http://www.plis.ru/ Если есть возможность, то закажите бесплатный диск ISE WebPack 9.1 от Inline Group (обычно на этом диске идет вся свежая документация от Xilinx + еще и переводы на русском) - эта бесплатная среда, позволяющая освоить все процедуры работы с ПЛИС. Для самой же работы лучше скачать с ftp для "своих" Xilinx ISE (полноценную версию). CoolRunner (другое название XPLA3): циклов перепрограммации внутренней Flash памяти обещают около 10000 (за 1 год усиленной работы). Семейство 5V толерантное, имеет существенно улучшенную логику (по сравнению с MAX3000 и XC9500), имеет возможность работы с внутренним глобальным клоком. Из опыта могу сказать, что это семейство весьма живучее (как-то раз, на плате с XCR3128XL-10TQ144С появилась сопля закоротившая питание CoolRunner на +5V - он отработал полных 2 суток без каких-либо заметных аномалий, а нашел я наличие кз случайно, только когда увидел на выходе ПЛИС уровни размахом в 5В). Если Вам понадобится описание XPL3 на русском языке - сообщите, и я его Вам перешлю. Startan-II: на это семейство нет eratta, в то же время на нем можно отработать основные навыки работы с FPGA. (Startan-II в отличии от Startan-IIE - 5V толерантен, но Startan-IIE умеет работать с диф. стандартами ввода/вывода). Но надо иметь в виду, что Spartan-II уже несколько староват. Startan-3: самое свежее дешевое Xilinx семейство, имеет практически все узлы, которые имеют дорогие и могучие ПЛИС, но часто его освоение связано с рядом неприятностей. CoolRunner и Startan-II программировал с Parallel Download Cable 3, ситема палка-веревка на 2 буферах, схему кабеля прилагаю. DownloadCableScheme.pdf -
Фурье-процессор на ПЛИС
Beby ответил Ans тема в Работаем с ПЛИС, области применения, выбор
Касательно все того же Spartan-3: в описании ПЛИС этого семейства утверждается, что буфера ввода/вывода могут работать со скоростью 622МБит/с (каждый). Думаю этого должно хватить (если нет, то попробуйте семейство Virtex-4 - оно заметно дороже, но и быстрее во всех отношениях). Уточните, пожалуйста, что именно имеется ввиду. Если имелось ввиду возможность синхронного тактирования нескольких ПЛИС, то методика этого описана в стареньком Aplication Note для уже немолодого семейства Virtex: http://direct.xilinx.com/bvdocs/appnotes/xapp132.pdf (Using the Virtex Delay-Locked Loop). После того, как у разных ПЛИС тактирование становиться синхронным, то проблем с передачей данных возникать не должно (в крайнем случае, можно воспользоваться запасами внутреннего ОЗУ, для создания сверх высокоскоростного FIFO, компенсирующее неравномерности потока передаваемых данных) Посмотрите описание всего семейства Spartan-3 и оцените насколько и что именно Вам подходит: http://direct.xilinx.com/bvdocs/userguides/ug331.pdf (Spartan-3 Generation FPGA User Guide) Возможно для Вас заинтересует Virtex-II Pro, с прототипами процессорных ядер; или Virtex-II Pro X (со сверх скоростным каналом связи: Rocket I/O) - насчет их достоваемости советую обратиться в inline group (официальный дистрибьютер Xilinx с странах СНГ www.plis.ru). -
2 AlexMad Память ранних ПЛИС (Virtex/Spatran2) рассчитана на небольшие FIFO (есть 2 порта в каждом блока ОЗУ, каждый может записывать или читать данные незавичимо от соседнего; но этой памяти для вашего проекта будет мало). Память более новых ПЛИС (Virtex2/Spartan3) - это уже могучий высокоскоростной кеш (с 1 битом четности, на каждые 8 бит данных). ПЛИС с мегабитом ОЗУ явно проектировались для реализации в себе группы высокопроизводительных вычислительных устройств, поэтому в таких ПЛИС имеется непомерное количество логических ячеек (которые врядли понадобятся при такой задачи, если эти ячейки, конечно, не превратить в мелко-блочное ОЗУ). Я бы посоветовал для создания токого устройства подыскать быстродействующее ОЗУ с возможностью конвеерного чтения/записи (статическое или динамическое - какое больше понравиться) и взять ПЛИС (Startan-3) с относительно небольшим количеством ОЗУ (столько, чтобы хватило на все необходимые FIFO), а не на хранение всей тестирющей последовательноти и полученых результатов. Наверное это будет оптимально по цене относительно нужного объема ОЗУ. Посмотрите описание всего семейства Spartan-3 и решите по соотношению цена/объем ОЗУ - какое схемотехническое решение лучше применить. http://direct.xilinx.com/bvdocs/userguides/ug331.pdf (Spartan-3 Generation FPGA User Guide) P.S. Для задач ввода данных с "большими" скоростями я использую 2 ОЗУ'ки в одну из них пишет ПЛИС, из другой (тоже через ПЛИС) данных читает потребитель. При полном вычитывании данных потребителем из одной ОЗУ'ки, ПЛИС начинает писать данные в свободнцю ОЗУ'шку, а занятую может начинать читать потребитель.
-
2 Kitsok К сожалению могу прокомментировать только касательно ПЛИС Xilinx. Судя по примененному семейству логики 74HCxxx, выходы MC 5 вольтовые, в семействах ПЛИС Xilinx существует только 3 не очень дорогие семейства ПЛИС нормально переживающих 5 вольт на входе: XPLA3 (CoolRunner - CPLD), XC9500 (CPLD) и Spartan2 (FPGA). Предпологаю, что ПЛИС типа CPLD будут наиболее интнресны, т.к. они несут прошивку во внутренней Flash памяти, FPGA - необходимо с чего-то загрузить, что в имеющемся случае несколько неудобно. С XC9500 я не работал, т.к. появились более новые и могучие XPLA3. Если брать XPLA3, то судя по количеству используемых ног, понадобиться как минимум XCR3265XL-PQ208 (265 логических ячеек, корпус PQ208 (164 I/O ноги), питание 3.3V). Ножка XPLA3 выдает 8mA (в принципе можно вытянуть и 10mA - ПЛИС на это рассчитана). Но если нагрузить все 128 светодиодных ног, то получается суммарный ток от 1.024 А и до 1.28 А - что весьма не мало (теоретически XPLA3 должна с этим справиться, но сам не пробовал так мучать ПЛИС). Касательно выходов: обычно для питания светодиодов используется OpenDrain, но в XCR3265 c ними проблема - специально выденного режима OpenDrain для I/O ноги в XPLA3 нет, а независимых управлений 3 состоянием ног для XCR3265 только 64 + 1 - поэтому при применении данного семейства такую схемотехнику применить невозможно. Если брать Spartan2, то самая маленькая ПЛИС с необходимым числом ног - это XC2S30-5PQ208 (имеющая 42096 байт прошивки, котою еще необходимо в нее загрузить). С выходами никаких проблем нет, то 24мА каждый, управление третьим состоянием для каждого выхода независимое. Но и стоит она не мало. Если систему можно перевести на питание 3.3 Вольта, то можно рассмотреть возможность применения CoolRunner2 (что будет из ПЛИС Xilinx будет наилучшим вариантом), если же система не имеет такой возможности, то я думаю, что оптимальным будет применение либо Altera MAX3000 (CPLD, I/O ног типа OpenDrain может быть сколько угодно), либо те самые 74HCxxx. 2 AlexMad Необходимо указать стандарт сигналов и минимальное количество памяти для работы устройства - от этого зависит рекомендуемые ПЛИС, но то, что это должна быть FPGA - сомнений нет.