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

tocha

Свой
  • Постов

    92
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные tocha


  1. Как сделать, чтобы в процессе условие срабатывало по обоим фронтам?

     

    if clk'event then -- не компилится. нужно дописывать clk='1'

     

    пробовал написать по разному:

     

    if clk'event and (clk = '1' or clk = '0') then

     

    ксилинкс пишет:

    ERROR:Xst:797 - "H:/embedded/device.vhd" line 350: unsupported Clock statement.

     

    :help:

     

    никак. Это несинтезируемая конструкция.

  2. А разве это читаемо. У Вас процесс по фронту клока. Почему нет задержки на такт?

    Наверно потому что в процессе используются одновременно два оператора :=, и <=

    Что заставляет хорошо подумать, во что такую конструкцию синтезатор реализует.

    Наверно нагляднне в процессе <=, А все не регистровое из процесса вынести.

     

    Это не у меня.

    А задержки нет, потому что присваивание значения переменной в процессе происходит сразу, и дальше по процессу переменная уже имееет новое значение, в отличии от сигнала.

  3. 2 tocha -

    Ну делаю я

     

    Но всё равно потом вычленять надо

    7 downto 5

     

    Может я что-то недопонял , можете объяснить ход ваших мыслей далее ?

     

     

    Так

    command := RS232_IN (7 downto 5);

    не будет синтезирован сдвиговый регистр, соответственно не будет задержки на такт.

     

    Какие там биты из шины RS232_IN анализировать - решайте сами.

     

    Я просто недокопировал "(7 downto 5)", теперь исправился.

  4. Здравствуйте.

    Я никак не могу понять, в чем же тут дело...

    Ну дак всё правильно, получился параллельный сдвиговый регистр.

     

    Заменить

     

    command := in_data_rs232(7 downto 5)

    на

    command := RS232_IN

     

    и станет как нада.

  5. Интересен как "ученые мужи" :) пишущие на VHDLе подходят к вопросу тестирования дизайна когда нужно гнать большие объемы входных данных через test-bench.

    В более приземленом плане - есть дизайн в области видео, нужно его прогонять объемами входных данных хотя-бы на несколько кадров что е реалиях будет немалое кол-во данных (скажем сигналы синхронизации, данные и т.д. на несколько кадров, в каждом кадре около 300 строк, в каждой строке - около 1600 побайтовых единиц инфы (т.е. около 1600 клоков).

    Т.е. на кадр входных данных получается более 400 000 тест векторов.

     

    Я так понимаю что в таком случае наверно работают с текстовыми файлами векторов которые читаются в test bench, так ?

     

    Именно так.

  6. Мне нужно распечатать несколько диаграм. Хочется, чтобы напечатались названия сигналов без полного пути!

    Пример:

    Вместо "/arbiter_tb/clk" нужно просто "/clk"

    tools-options-wave preferences - display signal paths (for ver. 6.1a)

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

    Вы неправы. Это называется "slew".

     

    "Skew" - это разброс задержек.

     

    Например относительно к клоку (из Quarus II Help):

    "clock skew"

    The difference in the arrival time of a clock signal at two different registers, which can be caused by path length differences between two clock paths, or by using gated or rippled clocks. Clock skew is the most common cause of internal hold violations.

  8. Равотаю в MadelSim SE 6.0a

    есть счетчик std_logic_vector значения разрятов которого я сравниваю с некоторыми константами.

    код примерно такой

     

    variable count: std_logic_vector(14 downto 0)
    -----------------------------------
    if(count="000101010111110")then
    ---
    end if;
    ---------------------------

     

    а так не пробовали:

    if ( count= CONV_STD_LOGIC_VECTOR( N, count'length ) then

    ...

  9. ВЛЕЗ ОДИН ТОЛЬКО В ACEX 30K, а на бумажке посчитал, что и 80 триггеров хватает.

    Если на Альтере и нет 5в-логики, Acex в утиль, вместо него Cyclone II, там есть встроенные умножители, ресурсов больше, стоит дешевле. Отфильтруете лёгко.

  10. По поводу наличия внутри ПЛИС трехстабильных буферов - нужно смотреть конкретные семейства ПЛИС. Например, в семействах XC4000, Spartan, Spartan XL, Spartan2, Spartan 2e, Virtex, Virtex2 и многих других они есть. А вот в Spartan 3, 3A, 3E уже нет. В ряде случаев применение внутренних трехстабильных шин дает выигрыш по ресурсам (хотя быстротой особой такое решение не отличается). Большие мультиплексоры потребуют введения регистров для достижения аналогичной частоты, что не всегда приемлемо.

    возможно Вы и правы.

  11. Если сигналы с выхода каждого устройства тянуть отдельно, то получим N*8 соединений вместо 8-ми.

    А Вам соединений жалко? :) А N*8 тристэйт буферов у Вас есть?

     

    Тристэйт буфера скорее всего находятся возле ног микросхемы, и завести их сигналы внутрь и соединить их по выходу синтезатор Вам врядли позволит.

     

    я думаю в FPGA так не делают. Шины свести в одну через мультиплексор. Тристейт буфера использовать только на выходах микросхемы, если нада.

  12. да ясный пень.... вобщем то ето и помогло уже... блин просто понять не могу, за кого обижаться: за Aldec, VHDL, или за наших писателей...

     

    type int1 is range 0 to ALL_PORT_NUM;-- not more than ALL_PORT_NUM devices

    Тут int1 и integer - совершенно разные, несвязанные друг с другом типы, несмотря на то , что оба - перечислымые, очень похожие, и т.д.

     

     

     

    subtype int1 is integer range 0 to ALL_PORT_NUM;-- not more than ALL_PORT_NUM devices

    Тут int1 - часть integer (может использоваться вместо него)

  13. компилятор алдека начал ругаться на попытки выполнить операцию сравнения и указания индекса с использованием переменных типа int1.

     

     

    subtype int1 is integer range 0 to ALL_PORT_NUM; Вам поможет

  14. Ннуу, хотя бы мег/с был?

    И одного не было.

    Может, дело было в ОС?

    В ней.

    Вопрос остается

    Исходника нет. Давно было. В 3032 наверное можно вложиться, правда если есть возможность, лучше взять побольше микросхему. Пригодится для эксперементов. Удачи.

  15. А причем тут "дифф. передатчик"? ;)

     

    А микросхема программируемой логики MAX3032 может иметь прямое отношение к LPT, если её к этому порту подсоединить :cheers: . Просто логика работы ECP-режима несколько сложнее стандартного SPP (см. описание ECP), одним ИР22 не отделаешься ;) .

     

    MAX3032 - дифф. передатчик.

    Эта которая EPM. Извините, не понял. Делали такое давно, влезало в 7128 (+ что-то ещё). Правда оболочка на ПК не смогла разрулить большой пакет на большой скорости. Двух мегабайт/с точно не было. А может руки кривые?

  16. [*]Делал ли кто-нибудь "ведомое устройство" в ECP режиме? Я планирую под это дело что-нибудь типа MAX3032, но выслушаю и другие предложения ;)

     

    А причём тут MAX3032. Это если я правильно понял дифф. передатчик. К LPT никакого отношения не имеет. Там ТТЛ-уровни. Были вроде.

  17. Господа в чем причина или как исправить ПРЕДУПРЕЖДЕНИЯ:

     

    - Warning: Found 1 output pins without output pin load capacitance assignment

    Info: Pin "mult_3" has no specified output pin load capacitance -- assuming default load capacitance of 0 pF for timing analysis

     

    Задать емкостную нагрузку на пин

     

    - Warning: Found pins functioning as undefined clocks and/or memory enables

    Info: Assuming node "CLK" is an undefined clock

     

    Задать макс. частоту для цепи CLK в Timing Analysis Settings

  18. Как я понимаю, эти предупреждения говорят о наложении уровней сигналов (logic level transitions) в один период времени. Не могу понять каких сигналов?

    Об двух изменениях уровня сигнала (любого) за один (короткий) период времени. Которого по замыслу быть не должно.

     

    Почему происходит этот самый glitch и как его избежать хотя бы при моделировании?, о синтезе я и спрашивать боюсь...

    Из-за разных задержек в распространении сигналов.

     

    и как его избежать хотя бы при моделировании?, о синтезе я и спрашивать боюсь...

    Никак. Вы временные интервалы для каждого значения Х увеличьте раз в 10 (вместо 10 нс - 100 нс). Станет наглядней.

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