User Tag List

Страница 84 из 174 ПерваяПервая ... 808182838485868788 ... ПоследняяПоследняя
Показано с 831 по 840 из 1740

Тема: Реверс-инжиниринг УКНЦ (1515ХМ1&2, 1801ВП1, 1801ВМ2)

  1. #831

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Еще замечу для @Ynicky, что счетчики CTR_LINE_ADR_L, CTR_LINE_ADR_H, U20 - с ускоренным переносом. Если их сделать по обычной схеме, будет ай-яй-яй.
    А я их сделал не по обычной схеме, а по поведенческому описанию. А уже синтезатор их переведет в схему (библиотечные элементы) как надо, в зависимости от заданных констрейнов (например рабочая частота).
    mk_sCTR_LINE_ADR_L:
    process (sPCLC_Q,sLOAD_LINE_ADR_L,sDGIN)
    begin
    if sLOAD_LINE_ADR_L = '1' then
    sCTR_LINE_ADR_L <= sDGIN;
    elsif (sPCLC_Q(2) = '1' and sPCLC_Q(2)'event) then
    sCTR_LINE_ADR_L <= sCTR_LINE_ADR_L + "1";
    end if;
    end process;

  2. #832

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,399
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,220
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Ynicky Посмотреть сообщение
    А я их сделал не по обычной схеме, а по поведенческому описанию. А уже синтезатор их переведет в схему (библиотечные элементы) как надо, в зависимости от заданных констрейнов (например рабочая частота).
    Я не разбираюсь в вышеприведенном языке.
    А разница между обычным счетчиком и счетчиком с ускоренным переносом большая.
    Обычный меняет свое состояние конвейерно, от младших бит к старшим. А счетчик с ускоренным переносом - одновременно. Если не предусмотреть это, то схема может работать некорректно.

  3. #833

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    счетчик с ускоренным переносом - одновременно
    Синтезаторы (в том числе и Quartus) так и делают.

  4. #834

    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ynicky Посмотреть сообщение
    Синтезаторы (в том числе и Quartus) так и делают.
    К сожалению - нет. Уже не раз синтезировал такие счётчики у себя и порой ловил глитчи на них, потому что биты выставлялись асинхронно новые. Было очень заметно, потому что это было в генераторе видеосигнала, логика сброса счётчиков и формирование сигнала конца строки (для инкремента по Y) была полностью асинхронной - в итоге иногда при запуске на FPGA пролетало 2 инкремента подряд, в итоге видеосигнал не определялся монитором вообще.
    Так что, если логика после счётчиков асинхронная - надо делать схему с ускоренным переносом или буферировать.
    А приведённый выше код Quartus собирал цепочкой D-триггеров банально - посмотри, что вышло в Post-Fit.
    "Байт-48"

  5. #835

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, не понятно почему выходные биты идут через комбинаторную логику.
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;

    entity cnt is
    port(ld, clk : in std_logic;
    din : in std_logic_vector(2 downto 0);
    qout : out std_logic_vector(2 downto 0));
    end;

    architecture behavior of cnt is
    signal sCNT: std_logic_vector(2 downto 0);
    begin
    process (ld,clk,din)
    begin
    if ld = '1' then
    sCNT <= din;
    elsif (clk = '1' and clk'event) then
    sCNT <= sCNT + "1";
    end if;
    end process;

    qout <= sCNT;

    end;



    - - - Добавлено - - -

    А если загрузку сделать синхронной, то выходы от триггеров:
    process (ld,clk,din)
    begin
    if (clk = '1' and clk'event) then
    if ld = '1' then
    sCNT <= din;
    else sCNT <= sCNT + "1";
    end if;
    end if;
    end process;


  6. #836

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,508
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ynicky Посмотреть сообщение
    Да, не понятно почему выходные биты идут через комбинаторную логику.
    Надо смотреть шаблоны. Со счётчиками ещё не имел дело, в основном - блоки памяти. Немного отошёл от шаблона - и усё, вместо использования встроенных блоков памяти - куча триггеров (вплоть до исчерпания максимального количества ЛЭ).

  7. #837

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну раз такое дело, сделаю счетчики на россыпи.

  8. #838

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ynicky Посмотреть сообщение
    Да, не понятно почему выходные биты идут через комбинаторную логику.
    ...
    А если загрузку сделать синхронной, то выходы от триггеров:
    Вот именно потому что если загрузка асинхронная, то получаем латч и выходы комбинаторикой нагружаем.
    Я не очень понимаю, это для моделирования (тогда латчи пофиг) или синтеза? Если синтез, то неужели Квартус не ругается?

  9. #839

    Регистрация
    09.04.2009
    Адрес
    Зеленоград
    Сообщений
    449
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    429
    Поблагодарили
    196 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это синтез. И не ругается. Только сообщает о LATCH.
    Warning (13004): Presettable and clearable registers converted to equivalent circuits with latches. Registers power-up to an undefined state, and DEVCLRn places the registers in an undefined state.
    Warning (13310): Register "sCNT[0]" is converted into an equivalent circuit using register "sCNT[0]~_emulated" and latch "sCNT[0]~1"
    Warning (13310): Register "sCNT[1]" is converted into an equivalent circuit using register "sCNT[1]~_emulated" and latch "sCNT[1]~5"
    Warning (13310): Register "sCNT[2]" is converted into an equivalent circuit using register "sCNT[2]~_emulated" and latch "sCNT[2]~9"
    Последний раз редактировалось Ynicky; 07.08.2020 в 20:20.

  10. #840

    Регистрация
    20.06.2005
    Адрес
    Светлогорск
    Сообщений
    885
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ynicky Посмотреть сообщение
    Это синтез. И не ругается. Только сообщает о LATCH.
    Warning (13004): Presettable and clearable registers converted to equivalent circuits with latches. Registers power-up to an undefined state, and DEVCLRn places the registers in an undefined state.
    Warning (13310): Register "sCNT[0]" is converted into an equivalent circuit using register "sCNT[0]~_emulated" and latch "sCNT[0]~1"
    Warning (13310): Register "sCNT[1]" is converted into an equivalent circuit using register "sCNT[1]~_emulated" and latch "sCNT[1]~5"
    Warning (13310): Register "sCNT[2]" is converted into an equivalent circuit using register "sCNT[2]~_emulated" and latch "sCNT[2]~9"
    Это и есть "ругается" - оно же явно пишет, что "добавило latch". Если писать всё нормально, такого не пишет.
    "Байт-48"

Страница 84 из 174 ПерваяПервая ... 808182838485868788 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 32
    Последнее: 18.12.2024, 18:19
  2. Реверс-инжиниринг игры Boovie
    от Oleg N. Cher в разделе Программирование
    Ответов: 41
    Последнее: 09.01.2022, 23:07
  3. Реверс инжиниринг печатной платы
    от Filin в разделе Несортированное железо
    Ответов: 36
    Последнее: 11.03.2018, 22:46
  4. Куплю 1515ХМ1-6006, 1515ХМ1−6008
    от moxjemi в разделе Барахолка (архив)
    Ответов: 3
    Последнее: 10.01.2012, 17:23
  5. 1801ВМ2 А и Б
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 03.05.2010, 11:51

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •