User Tag List

Страница 106 из 191 ПерваяПервая ... 102103104105106107108109110 ... ПоследняяПоследняя
Показано с 1,051 по 1,060 из 1910

Тема: ПЛИС и всё что с ними связано

  1. #1051

    Регистрация
    28.12.2012
    Адрес
    Leesburg, VA, USA
    Сообщений
    974
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну я бы делал примерно так:
    Код:
    process (flck)
    begin
        if (fclk'event and fclk = '1')
        begin
            if (clr_flag = '1') then
                rd_sig <= '0';
            elsif (ram_rd = '1') then
                rd_sig <= '1';
            end if;
        end
    end process;
    flck - некий клок системы, в домене которого находятся все сигналы модуля. Например 14 мгц.
    При этом, дабы избежать метастабов, если сигналы clr_flag и ram_rd в другом клоковом домене, их бы нефигово пересинхрить на клок flck.

    В общем проблему надо разделить на две:
    1. (главная!) НИКОГДА не использовать выход комбинаторики как клок, а только как клок енабле, да и то желательно пересинхренный.
    2. Пересинхривать любые сигналы другого клокового домена на текущий.

    ---------- Post added at 01:43 ---------- Previous post was at 01:41 ----------

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

    ---------- Post added at 01:44 ---------- Previous post was at 01:43 ----------

    На уютном верилоге так:
    Код:
    always @(posedge fclk)
        if (clr_flag)
            rd_sig <= 1'b0;
        else if (ram_rd)
            rd_sig <= 1'b1;

  2. #1051
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #1052

    Регистрация
    04.12.2008
    Адрес
    г. Черкассы, Украина
    Сообщений
    957
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    8 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от TSL Посмотреть сообщение
    Ну я бы делал примерно так:
    Код:
    process (flck)
    begin
        if (fclk'event and fclk = '1')
        begin
            if (clr_flag = '1') then
                rd_sig <= '0';
            elsif (ram_rd = '1') then
                rd_sig <= '1';
            end if;
        end
    end process;
    Вот тут и проблема, что это не сработает, в асинхронном примере сигнал rd_sig устанавливается в 1 только по стробу ram_rd. А у тебя и после clr_flag = 0 при ram_rd = 1. Есть еще варианты?

  4. #1053

    Регистрация
    31.03.2008
    Адрес
    Москва
    Сообщений
    735
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    37 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    always @(posedge fclk)
    begin
    ram_rd_old <= ram_rd;
    if (clr_flag)
    rd_sig <= 1'b0;
    else if ( ram_rd & ~ram_rd_old )
    rd_sig <= 1'b1;
    end
    за счет детектора фронта получаем запаздывание
    ZXM-Phoenix rev.01 2048K, VG93 hw emulator

  5. #1054

    Регистрация
    16.12.2009
    Адрес
    Харьков
    Сообщений
    4,735
    Спасибо Благодарностей отдано 
    365
    Спасибо Благодарностей получено 
    378
    Поблагодарили
    241 сообщений
    Mentioned
    11 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от TSL Посмотреть сообщение
    port77_wr <= '1' when adress(7 downto 0)=X"77" and iorq='0' and m1='1' and wr='0' and cpm='1' else '0';

    elsif (port77_wr'event and port77_wr='0') then

    Так низя делать, асинхронщина во все дыры.
    Клокать ТОЛЬКО по глобалклоку, с условиями по port77_wr и проч.
    кстати, не понятно как оно вообще работало, ведь port77_wr присваивается "1"ца для записи 1 бита шины данных на SDCS, а записывается по спаду port77_wr. пипец вобщем. Эта часть прошивы из модуля расширения для робика, её не трогал. попробую с условием port77_wr='1' и вроде если правильно тебя понял про синхронность, сделал пока так:
    Код:
    port77_wr <= '1' when adress(7 downto 0)=X"77" and iorq='0' and m1='1' and wr='0' and cpm='1' else '0';
    process (port77_wr, res, f14)
    	begin
    		if res='0' then
    			nSDCS <= '1';
    		elsif f14'event and f14='1' then
    			if port77_wr='1' then
    				nSDCS <= Data(1);
    			end if;
    		end if;
    end process;
    вчера пропаял плис с жидкой канифолью и промыл спиртом - ниче не поменялось. буду смотреть таки питание, может какие фильтры поставлю, как в эве на питание сдкарты, для начала. также вечером проверю прошиву.
    Profi must live!

    Моё железо...

    1. Profi 5.06/1Mb(DRAM)+Profi5.06(UP)/HDD/3`5FDD/CF512Mb/SD-CARD
    3. Profi 6.2 Rev. B/1Mb/3`5FDD/HDD3.2Gb
    4. Profi 5.05(down)/1Mb+Profi 5.03(UP)/Pentagon_Fix
    Все укомплектованы:
    Profi_ZX-BUS/ZXMC2/NemoIDE/SounDrive
    [свернуть]

    Ссылка на Telegram-канал поддержки пользователей Profi.

  6. #1055

    Регистрация
    04.12.2008
    Адрес
    г. Черкассы, Украина
    Сообщений
    957
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    8 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от solegstar Посмотреть сообщение
    Код:
    port77_wr <= '1' when adress(7 downto 0)=X"77" and iorq='0' and m1='1' and wr='0' and cpm='1' else '0';
    Непонятно участие сигнала M1# в конкретном случае. Скорей всего M1# здесь ненужен.

  7. #1056

    Регистрация
    28.12.2012
    Адрес
    Leesburg, VA, USA
    Сообщений
    974
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    IanPo, да действительно, я не учел фронт.
    В общем я так из фронтов стробы и выделяю.
    А где задежка кроме периода fclk?

  8. #1057

    Регистрация
    31.03.2008
    Адрес
    Москва
    Сообщений
    735
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    37 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Задержка от 0 до fclk, другой нет.
    ZXM-Phoenix rev.01 2048K, VG93 hw emulator

  9. #1058

    Регистрация
    28.12.2012
    Адрес
    Leesburg, VA, USA
    Сообщений
    974
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А вот такая задачка:

    reg [7:0] cnt;
    always @(posedge clk)
    if (stb)
    cnt <= cnt + 8'b1;

    stb - сигнал внешнего интерфейса асинхронный по отношению к домену clk.
    Что нужно сделать с stb, чтоб избежать тотального глюкалова?

  10. #1059

    Регистрация
    31.03.2008
    Адрес
    Москва
    Сообщений
    735
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    37 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не совсем понятно, в чем глюкалово(покажи, что за сигнал), поэтому пока что вот так:
    http://www.kit-e.ru/articles/circuit/2009_02_102.php
    http://www.fpga4fun.com/CrossClockDomain.html

    ЗЫ. Вместо 8'b1 можно написать 1'b1 безо всякого ущерба, компилятор наверняка так и оптимизирует
    ZXM-Phoenix rev.01 2048K, VG93 hw emulator

  11. #1060

    Регистрация
    28.12.2012
    Адрес
    Leesburg, VA, USA
    Сообщений
    974
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ссылки хорошие, собсна в них описана и проблема, и ее решение
    Цитата Сообщение от IanPo Посмотреть сообщение
    Вместо 8'b1 можно написать 1'b1 безо всякого ущерба, компилятор наверняка так и оптимизирует
    Угу.

    ---------- Post added at 20:03 ---------- Previous post was at 20:01 ----------

    Цитата Сообщение от IanPo Посмотреть сообщение
    Не совсем понятно, в чем глюкалово
    Метастабы.

Страница 106 из 191 ПерваяПервая ... 102103104105106107108109110 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. ДВК (и всё, что с ними связано)
    от Grand в разделе ДВК, УКНЦ
    Ответов: 4575
    Последнее: 17.11.2025, 11:38
  2. PAL/GAL и все что с ними связано.
    от Mick в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 489
    Последнее: 19.09.2025, 18:39
  3. SMUC на дискретах и ПЛИС
    от spensor в разделе Scorpion
    Ответов: 846
    Последнее: 02.05.2025, 08:36
  4. Ответов: 1215
    Последнее: 10.02.2025, 19:04
  5. Вопрос по ПЛИС
    от Zloy в разделе Несортированное железо
    Ответов: 23
    Последнее: 17.10.2015, 17:12

Ваши права

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