Vitёk 0 19 января, 2005 Опубликовано 19 января, 2005 · Жалоба В комплекте поставки EDK 6.2 есть исходники макросов для построения процессорной системы, которые я пытаюсь конвертить в Verilog. Ниже привожу фрагмент файла. library IEEE; use IEEE.std_logic_1164.all; library channel_fifo_v1_00_a; use channel_fifo_v1_00_a.all; ......... COUNTER_BIT0_I : entity channel_fifo_v1_00_a.address_counter_bit0(imp) port map ( Clk => Clk, -- in Rst => Rst, -- in Count_In => i_count_out(C_NUM_BITS-1), -- in Load_In => Load_In(C_NUM_BITS-1), -- in Count_Load => Count_Load, -- in Count_Down => Count_Down, -- in Carry_In => alu_cy(C_NUM_BITS), -- in Clock_Enable => count_clock_en, -- in Result => i_count_out(C_NUM_BITS-1), -- out Carry_Out => alu_cy(C_NUM_BITS-1) -- out ); Конвертер ругается на строку, котороя начинается с "COUNTER_BIT0_I : entity ...", сообщение об ошибке следующее: syntax error in line 144 COUNTER_BIT0_I : entity <-- Returned token is 280 Теперь, собственно, два вопроса: 1) Для общего развития: что сия конструкция значит; 2) Каим образом это переделать в удобоваримую для X-HDL 3.2.44 форму. Что думают по этому поводу многоуважаемые знатоки VHDL? На всякий случай даю все исходники, содержащиеся в той папке. fifo.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 19 января, 2005 Опубликовано 19 января, 2005 · Жалоба 1) Для общего развития: что сия конструкция значит; Это значит, что при instantiation'e надо использовать модуль address_counter_bit0 с архитектурным телом imp из библиотеки channel_fifo_v1_00_a. При этом декларация компонента в этом архитектурном теле не требуется. 2) Каим образом это переделать в удобоваримую для X-HDL 3.2.44 форму. А он не поддерживает VHDL'93? Наверное, тогда надо использовать компонент "как обычно", т. е. сначала продекларировать, потом смапить. Что думают по этому поводу многоуважаемые знатоки VHDL? Очень шорошо думаю. :) Избавляет от необходимости декларировать не blackbox-компоненты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitёk 0 19 января, 2005 Опубликовано 19 января, 2005 · Жалоба Спасибо :) Только я мало что понял. Нельзя ли конкретнее? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 19 января, 2005 Опубликовано 19 января, 2005 · Жалоба Вкратце так. Использование конструкции (instantiation of a design entity) label: entity library_name.entity_name(architecture_name) port map(...); начиная с VHDL'93 избавляет от необходимости декларировать компоненты в том архитектурном теле, где они используются. Ведь интерфейс модуля entity_name, который находится в библиотеке library_name, уже известен. Зачем его еще раз описывать? Это сильно сокращает объем кода. Но это не относится к черным ящикам, интерфейсы которых пока нигде не описаны. Если опять не понятно, задавайте конкретные вопросы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitёk 0 19 января, 2005 Опубликовано 19 января, 2005 · Жалоба Спасибо за ликбез :) Как я понял, чтобы конвертер не спотыкался, то интерфейс модуля "entity_name" (в моём случае это address_counter_bit0) нужно включить в начало этого файла. Если да - то какой именно фрагмент нужно скопировать, а какой удалить? (В начале темы есть архив, там содержание всей папки "channel_fifo_v1_00_a", в т.ч. "address_counter.vhd", на котором происходит затык, и "address_counter_bit0.vhd" с описаниями архитектуры). ЗЫ:Прошу прощения за назойливость. У меня не было (да и щас нет) желания вникать в тонкости VHDL, да вот пришлось... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 19 января, 2005 Опубликовано 19 января, 2005 · Жалоба В файле address_counter.vhd после строки 128, в котрой написано architecture imp of address_counter is пишете: component address_counter_bit0 -- сюда вставляете содержимое entity модуля address_counter_bit0 -- (файл address_counter_bit0.vhd, строки 89--99) end component; То же самое для address_counter_bit. Затем в том же address_counter.vhd все подстроки entity channel_fifo_v1_00_a.address_counter_bit0(imp) (где мапятся эти компоненты) заменяете на просто address_counter_bit0. То же самое для address_counter_bit. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitёk 0 19 января, 2005 Опубликовано 19 января, 2005 · Жалоба Сенкс, попробую... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitёk 0 19 января, 2005 Опубликовано 19 января, 2005 (изменено) · Жалоба Йессс! Получилось! Ещё заменил: COUNTER_BIT0_I : entity channel_fifo_v1_00_a.address_counter_bit0(imp) на COUNTER_BIT0_I : address_counter_bit0 и всё схавалось B) Большое спасибо за пинок в нужном направлении. С меня бутылка конфет... ;) -------------------------------------------------------------------------------------------- А вот сейчас почитал Ваш пост до конца, собсно там всё до конца расписано. Изменено 19 января, 2005 пользователем Vitёk Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться