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

Хорошие/плохие идеи для ПЛИС.

Народ. Нужна книжка, или в общем хоть что-то про то как строить архитектуры. Как делать хорошо и как плохо. К примеру делать шины с Z состоянием - плохо. А как их делать? НУ вот к примеру как по проекту раскидать кучу регистров, висящих на общей ША/ШД? Квартус ругается на Z состояния, и глобальные wor делать не дает. У меня идеи закончились.

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


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

Народ. Нужна книжка, или в общем хоть что-то про то как строить архитектуры. Как делать хорошо и как плохо.

В закромах смотрели?

 

К примеру делать шины с Z состоянием - плохо. А как их делать?

Без Z-состояния. Всегда ваш, К.О. :)

 

НУ вот к примеру как по проекту раскидать кучу регистров, висящих на общей ША/ШД? Квартус ругается на Z состояния, и глобальные wor делать не дает. У меня идеи закончились.

Мультиплексорами. Скачайте с Opencores Whishbone Conbus и Conmax и изучите их внутренности.

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


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

Что смотреть в закромах?

Что такое КО?

Вот у меня ощущения что мультиплексор у меня тормозит больше всего.

 

 always_comb begin
        //always @(sel_tx) begin
                case (sel_tx)
                        default: begin
                                tx_dv = 'h0;
                                tx_dfr  = 'h0;
                                tx_req  = 'h0;
                                tx_err = 'h0;
                                tx_desc_l = 'h0;
                                tx_data ={8{8'h8}};//'h0;
                        end
                        SEL_MEMIO: begin
                                tx_dv                 = pcie_memio.tx_dv;
                                tx_dfr          = pcie_memio.tx_dfr;
                                tx_req          = pcie_memio.tx_req;
                                tx_err                 = pcie_memio.tx_err;
                                tx_desc_l         = pcie_memio.tx_desc;
                                tx_data         = pcie_memio.tx_data;
                        end
                        SEL_INTS: begin
                                tx_dv = pcie_ints.tx_dv;
                                tx_dfr  = pcie_ints.tx_dfr;
                                tx_req  = pcie_ints.tx_req;
                                tx_err = pcie_ints.tx_err;
                                tx_desc_l = pcie_ints.tx_desc;
                                tx_data = pcie_ints.tx_data;
                        end
итд.

Так, нормально?

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


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

В закромах смотрели?

 

Без Z-состояния. Всегда ваш, К.О. :)

 

Мультиплексорами. Скачайте с Opencores Whishbone Conbus и Conmax и изучите их внутренности.

+1. Уже с Вами это обсуждали. Похоже, Ваша цель - чтобы форум за Вас и всю работу делал...

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


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

Я глянул на опенкорах. Мне что-то простое. На уровне шины адресс/данные итд.

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


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

Народ. Нужна книжка, или в общем хоть что-то про то как строить архитектуры...
По ключевым словам Вашего вопроса, не вникая в его суть, т.к. вопрос до конца не понят:

Книга Максфилд К. "Проектирование на ПЛИС. Архитектура, средства и методы. Курс молодого бойца", 2007,

 

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


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

Я глянул на опенкорах. Мне что-то простое. На уровне шины адресс/данные итд.

Этот пост говорит о том, что вы ничего не смотрели из того, что я вам сказал. Потому что Wishbone - это и есть шина адресс/данные.

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


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

Этот пост говорит о том, что вы ничего не смотрели из того, что я вам сказал. Потому что Wishbone - это и есть шина адресс/данные.

Тогда я что-то не то смотрел. То что я смотрел было с тегами какие-то фигнй, громадный проект короче. Зарегился на опенкорес. Жду апрувала.

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


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

Этот пост говорит о том, что вы ничего не смотрели из того, что я вам сказал. Потому что Wishbone - это и есть шина адресс/данные.

Потому что глянул. А надо было еще осмыслить.

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


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

Так, на всякий случай, вставлю 5 копеек.

Прогр. логика да, не "любит" Z-состояние.

А при переводе проекта в ASIC это является неким минусом. Ибо реализация на мультиплексорах ГОРАЗДО более громоздкая и тормозная получается. В ASICах шины с третьим состоянием предпочтительнее.

Стоит это учитывать в проектах, если есть перспектива реализации не только в ПЛИС.

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


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

Прогр. логика да, не "любит" Z-состояние.

Она его не то что не любит, а оно на внутренних буферах FPGA просто не реализовано.

 

В ASICах шины с третьим состоянием предпочтительнее.

Я сколько видел библиотек - ни разу не встречал там внутреннего буфера с Z-состоянием. Поэтому думаю, что вы ошибаетесь.

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


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

Так, на всякий случай, вставлю 5 копеек.

Прогр. логика да, не "любит" Z-состояние.

А при переводе проекта в ASIC это является неким минусом. Ибо реализация на мультиплексорах ГОРАЗДО более громоздкая и тормозная получается. В ASICах шины с третьим состоянием предпочтительнее.

Стоит это учитывать в проектах, если есть перспектива реализации не только в ПЛИС.

В ПЛИС семейства Virtex II (стр. 28) были внутренние шины с третьим состоянием, а потом Xilinx почему то отказался.

Например синтезатор Xilinx автоматически переводит третье состояние в мултиплексоры...если логика размещается внутри кристала.

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


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

Потому что глянул. А надо было еще осмыслить.

Осмыслил. 8 портов. А если 50? Не подходит.

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


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

Она его не то что не любит, а оно на внутренних буферах FPGA просто не реализовано.

В ПЛИС семейства Virtex II (стр. 28) были внутренние шины с третьим состоянием, а потом Xilinx почему то отказался.

Например синтезатор Xilinx автоматически переводит третье состояние в мултиплексоры...

Да, не реализовано. Это и есть моё "не любит". Но, варианты "обхода" для последующего ASIC-строительства есть.

Отказался, скорее всего, из-за того, что есть зависимость между емкостью шины и мощностью требуемого буфера. Т.е. нет универсальности. А с мультиплексорами несколько более просто по нагрузкам, более просчитываемо.

 

Я сколько видел библиотек - ни разу не встречал там внутреннего буфера с Z-состоянием. Поэтому думаю, что вы ошибаетесь.
А я встречал. И сам их "рисовал". Поэтому, ошибаться не могу, пардон.

А экономия получается весьма приличная. Отсюда и подход.

Правда, многих этот момент мало интересует. Работает как-то, да и ладно. Тоже политика.

 

Оффтопить не буду, завязываю.

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


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

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

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

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

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

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

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

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

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

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