-
Постов
1 270 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Flip-fl0p
-
-
Прежде чем принимать поток по 8b/10b - неплохо было бы сделать битовую синхронизацию. Ошибки могут быть не только из-за неправильной работы декодера, но и из-за неправильного положения фронта клока. Вообще можно скачать готовое ядро 8b/10b от Xilinx. У них есть разные варианты в том числе и на основе блочной памяти.
- 1
-
Начните с бумаги и карандаша и ластика. Рисуете схему на бумаге. Потом переносите её на код. Большинство вопросов отпадает уже на этом этапе.
-
57 минут назад, Koluchiy сказал:
Вопрос: при отсутствующих ILA оказывают ли mark_debug влияние на синтез?
Скорее всего да. Ибо часто бывало так, что не подключая ни одну ILA к проекту, но оставляя линии помеченными mark_debug проект собирался со слаками. Удалив атрибуты mark_debug, но при этом больше не внося никаких изменений в код - собирался с огромными запасами по слкам.
-
Мало исходных данных.
1. Снизить частоту там где есть возможность.
2. Проверить правильность всех CDC.
3. Правильно обкострейнить входы\выходы.
4. Описать мультициклы если они есть.
5. Удалить все ILA и все лишние атрибуты типа dont_touch, mark_debg
6. Там где можно поставить auto_pipeline регистры.
-
У вас написано, что есть не назначенные пины. Назначьте их.
-
А как вы себе представляете это ? ILA появляется только если есть битстрим, в котором эта ILA подключена. А дальше в окнах настройки триггера вы можете выбрать какой LTX подцепить.
-
Ваш случай описан в Timequest для чайников.
-
Спасибо. Получил. В течении дня в свободное от работы время посмотрю. Ближе к вечеру дам ответ.
- 1
-
Можно попробовать. Давайте тогда я оценю фронт работы, чтобы понимать - имеет ли смысл вообще браться за неё. Можно прислать мне на почту: [email protected]
Если есть краткое описание устройства - то вообще отлично. Единственный нюанс - я не очень хорошо разбираюсь в области цифровой обработки сигналов (DSP). Мне ближе системная часть.
- 1
-
А попробуйте отдельно подключать goldem model от микрона например.
Я помню, что по какой-то причине пришлось руками прикручивать модель памяти. Но за давностью лет не помню почему 😭
-
Попробуйте отключить отптимизациию:
vsim -t 1ps -L altera -L lpm -L sgate -L altera_mf -L altera_lnsim -L cyclonev -L rtl_work -L work
-voptargs="+acc"-novopt dpp_vhd_tst -
Непонятное что-то + 1 = непонятное что-то. Инициализируйте счетчик начальным значением.
-
В 09.06.2022 в 22:20, WladimirK сказал:
Ко мне на почту не пришел ваш вопрос, извиняюсь, что так поздно отвечаю. Последняя точно для работы с integer. Например резервирую переменную: signal x std_logic_vector(7 downto 0). Далее я хочу ее использовать в качестве счетчика, то есть x<=x+1; так вот без этой библиотеки я не смогу использовать вектор как целое число. А про первую, надо почитать, подзабыл, но я ее везде использую. Привык:)
VHDL - язык со строгой типизацией.
Если Вам необходимо инкрементить тип STD_LOGIC_VECTOR то вы можете подключить стандартную библиотеку IEEE.numeric_std
затем вы тип STD_LOGIC_VECTOR преобразуете в тип UNSIGNED. Инкрементируете. И преобразуете обратно в тип STD_LOGIC_VECTOR.
Или же сразу счетчики объявляете типом UNSIGNED.
signal x std_logic_vector(7 downto 0) := (others => '0'); signal y unsigned(7 downto 0) := (others => '0'); begin counter_x_proc : process begin if (rising_edge(clk)) then x <= std_logic_vector(unsigned(x) + "1"); end if; end process counter_y_proc : process begin if (rising_edge(clk)) then y <= y + "1"; end if; end process end process;
-
В 07.06.2022 в 13:29, jenya7 сказал:
я с ModelSim никак не могу подружится. у меня в тестбенчах полный рассинхрон. работают только самые тривиальные. чуть посложнее и .
Пока не заработает на симуляции - нет смысла работать с железом. Учите модельсим.
-
6 часов назад, slkhome сказал:
Подставил указанну строчку в *.ini и ничего не изменилось в выводе, вообще!
Подставил и в локальный и в глобальный *.ini - ничего.
В чем может быть проблема?
Потому-что надо не подставлять строчку, а редактировать этот файл.
-
Вопрос не по теме.
Зачем Вы применяете эти библиотеки ?
use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
-
1 час назад, Maverick_ сказал:
можешь своим modelsim.ini поделиться? пожалуйста
Получается что если я уберу
Time: %T Iteration: %D%I\n
то не будет выводиться?
Вроде так.
-
В файлике modelsim.ini править надо
у меня такой вывод:
; MessageFormatNote = "** %S: %R\n Time: %T Iteration: %D%I\n" ; MessageFormatWarning = "** %S: %R\n Time: %T Iteration: %D%I\n" ; MessageFormatError = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" ; MessageFormatFail = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" ; MessageFormatFatal = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" ; MessageFormatBreakLine = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F Line: %L\n" ; MessageFormatBreak = "** %S: %R\n Time: %T Iteration: %D %K: %i File: %F\n" ; MessageFormat = "** %S: %R\n Time: %T Iteration: %D%I\n" MessageFormat = "------------------------------------------------------------------------------------------------------\n ****** %R \n\t\t\t\t\t | process : %O\n\t\t\t\t\t | Time : %T\n\t\t\t\t\t | line : %L\n\t\t\t\t\t | Severity: %S\n------------------------------------------------------------------------------------------------------\n\n"
-
04.05.2022 в 18:33, lyaksandrov сказал:
Всем, привет. Сразу скажу, что в проектировании на ПЛИС я полный 0. Но выпала такая потребность (для учебы) создать приемник rs 232. Посмотрел много всего, но так и не разобрался и ни один код не заработал. Требуемые параметры 16 МГц Скорости 57600 и 115200, Бит четности Odd 6. Может кто направить или подсказать с чего начать делать? Возможно у кого-то есть свои наработки. Язык использую Verilog.
Если и хотите остаться нулем в ПЛИС - то используйте чужие наработки.
-
5 минут назад, misyachniy сказал:
У каждого свой метод чтения. Я такие конструкции сведу в один абзац и все будет читаемо.
9'd70 - адрес переменной переменной, UV_Z - наименование переменной, все что в средине базовый адрес и сигналы разрешения и так понятны.
Могу скопировать массив строк в программу процессора и сравнить с текстом программы
if (((Adress_Config == (9'd70 + 9'd256)) & ack_config & Debug) UV_Z <= Data_Config[13:1];
По поводу "достаточно открыть сгенерированный нетлист. " - ничего не могу сказать.
Удобство чтения - очень субьективно.
Но Magic number - плохая практика. Откуда взялись эти 9'd70 + 9'd256. Что они значат. Зачем они. Я такой подход не одобряю.
А в чем сложности посмотреть сгенерированный нетлист ?
-
10 минут назад, misyachniy сказал:
Перебираю чужой проект. Подчищаю и "переписываю под себя". Для проверки сравниваю sof файлы "старый" и "новый."
Есть вот такая конструкция
always @ (posedge clk) begin begin if(Adress_Config == (9'd70 + 9'd256)) begin if(ack_config == 1'b1 && Debug == 1'b1) begin UV_Z <= Data_Config[13:1]; end end end end
Я убрал лишне
if ((Adress_Config == (9'd70 + 9'd256)) && (ack_config == 1'b1 && Debug == 1'b1)) UV_Z <= Data_Config[13:1];
Сравнение файлов показывает различия.
По школьным знаниям могу предположить, что в первом варианте реализуется "приоритетный шифратор", во втором - "дешифратор". На мой взгляд функционировать должно одинаково, но почему генерится другой файл?
//-----
Ну и чтобы два раза не вставать, встретил два таких оператора вместе
if(RM_Rise == 1'b1) Dis_Foto <= 1'b1; if(Res_Dis_Foto == 1'b1) Dis_Foto <= 1'b0;
Понятно что Dis_Foto присваивается 1 и 0 одновременно, но при сборке проекта никаких предупреждений не выводиться.
Как работает такая конструкция?
Вы простую и понятную конструкцию заменили на непонятную и не читаемую. Зачем ?
Чтобы ответить на Ваш вопрос - достаточно открыть сгенерированный нетлист.
-
10 часов назад, Maverick_ сказал:
также как и я )))
Так это же базовые правила - на все асинхронные сбросы ставить reset bridge.
-
21 минуту назад, щещ сказал:
А так это Мега функция
Я её не сам же написал
Какая разница какой язык будет?
Можно и vhdl было выбрать
Можно говорить на современном языке и понимать окружающих(VHDL, V , SV). А можно говорить на мертвом диалекте и ничего не понимать (AHDL) Решать Вам.
-
12 минут назад, jenya7 сказал:
а когда flag_edge = '1' ?
Он формируется детектором фронта. У меня это отдельный самописный модуль с кучей параметров.
Вот мой старый пример: https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=80167&page=14#comments
8b10b decoder проблема с определением ошибки running disparity
в Работаем с ПЛИС, области применения, выбор
Опубликовано · Пожаловаться
А можно поподробнее ? ))) Все время приходилось своими силами выравнивать клок путем динамического сдвига фазы. Неужели можно это не делать теперь ?