![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Программные средства foundation Табл. 4.41. Синтаксис оператора component в языке VHDL label: component-name port mwpisignall, signal2, .... signaln); label: component-name oxt maip(portJ=>signaU, port2=>signal2, .... portn=>signaln); Ключевое слово port map вводит список, посредством которого портам названного объекта ставятся в соответствие сигналы данной архитектуры. Список может быть представлен одним из двух различных способов. Первый из них является позиционным: как и в обычных языках программирования, сигналы, упоминаемые в списке, связываются с портами объекта в том же самом порядке, в каком порты перечислены в определении объекта. Второй способ записи - явный: каждый порт объекта связывается с сигналом посредством оператора => , и эти соответствия могут следовать в любом порядке. До того как компонент будет подвергнут обработке внутри архитектуры, он должен быть декларирован объявлением компонента (component declar-ation) в определении архитектуры (см. табл. 4.28). Как видно из табл. 4.42, объявление компонента является по существу таким же, что и часть объявления соответствующего объекта, где объявляются порты: приводятся имя, режим и тип каждого порта.
Табл. 4.42. Синтаксис объявления компонента в языке VHDL Используемые в архитектуре компоненты могут быть либо ранее определенными элементами данного проекта, либо библиотечными элементами. Табл. 4.43 представляет собой пример VHDL-обьекта и его архитектуры, в которой используются компоненты устройства для обнаружения простых чисел , структурно идентичные отдельным вентилям в схеме нарис. 4.30(c). В объявлении объекта названы входы схемы и ее выход. В части архитектуры, отведенной под объявления, присваиваются имена всем сигналам и компонентам, которые используются внутри данной архитектуры. Этот пример был разработан и скомпилирован в профаммной среде Xilinx Foundation 1.5 (см. Обзор литературы), где INV, AND2, AND3 иОК4 являются предопределенными компонентами. Заметьте, что операторы component в табл. 4.43 исполняются параллельно. Даже в том случае, когда операторы расположены в другом порядке, результатом синтеза будет та же самая схема и моделирование ее работы будет приводить к одному и тому же. VHDL-архитектуру, в которой используются компоненты, часто называют структурным описанием (structural description) или структурной моделью (structural design), поскольку ею задается реализующая данный объект точная конфигуращга соединений, по которым сигналы передаются от одного элемента к щгому. В этом отношении ясное структурное описание эквивалентно схеме устройства или списку соединений в нем. Табл. 4.43. Структурная VHDL-программа для устройства, обнаруживающего простые числа library IEEE; use IEEE.std logic 1164.all; entity prime is port < N: in STD LOGIC VECTOR (3 downto 0); F: out STD.LQGIC ); end prime; architecture primel arch of prime is signal K3 L, S2 L. S1 L: STD.LQGIC; signal K3L.no, N3L S2L K1, S2L N1 N0, N2 B1L N0: STD.LOGIC; component IKV port (I: m STD LOGIC; 0: out STD.LOGIC); end component; component AND2 port (10,11: in STD.LOGIC; 0: out STD.LOGIC); end component; component AND3 port (10,11,12: in STO.LOGIC; 0: out STD.LOGIC); end component; component 0R4 port (10,11,12,13: in STD.LOGIC; 0: out STD.LOGIC); end component; begin Ul: IBV port map (N(3), S3 L); U2: INV port map (S(2), K2 L); U3: INV port map (N(l), Nl.L); U4: AND2 port map (N3.L, N(O), N3L.N0); U5: ANDS port map (N3 L, N2.L, N(l), N3L S2L N1); U6: ASD3 port map (S2 L, S(l), ЬЧО), S2L N1.N0); U7: AHD3 port map (S(2), Nl.L, N(O), N2 N1L N0); U8: 0R4 port map (N3L N0, N3L N2L N1, N2L N1 N0, S2 N1L.N0, F); end primel.arch; В некоторых приложениях бывает необходимо создать несколько копий определенного блока внутри архитектуры. В разделе 5.10.2 мы увидим, например, что -разрядный сумматор со сквозным переносом можно образовать каскадным включением и полных сумматоров . В языке VHDL имеется оператор generate (generatestatement), который позволяет создавать такие повторяющиеся блоки посредством своего рода цикла for без необходимости выписывать все копии по отдельности. Синтаксис простого итеративного цикла generate показан в табл. 4.44. Идентификатор identifier объявляется явно как переменная, тип который совместим с диапазоном range. Параллельный оператор concurrent statement исполняется однократно для каждого возможного значения переменной identifier в пределах диапазона; переменную identifier можно использовать внутри параллельного оператора. В табл. 4.45 показано, как можно построить 8-разрядный инвертор. Табл. 4.44. Синтаксис цикла for-generate на языке VHDL label, for identifier in range generate concurrent-statement end generate; Табл. 4.45. VHDL-объект и его архитектура для 8-разрядного инвертора library IEEE; use IEEE.std logic l164.all; entity invS is port (X: m STD LOGIC VECTOR (1 to 8); Y: out STD LOGIC VECTOR (1 to 8) ); end inv8; architecture inv8 axch of inv8 is component INV port (I: in STD.LOGIC; 0: out STD L0GIC); end component; begin gl: for b in 1 to 8 generate 01: INV port map (X(b) , Y(b))-, end generate; end inv8 arch; Значение константы должно быть известно к моменту компиляции программы, написанной на языке VHDL. Во многих приложениях бывает полезно разработать и откомпилировать объект и его архитектуру, оставляя некоторые из его параметров не заданными, например, разрядность шины. Сделать это позволяет имеющийся в языке VHDL инструмент generic . С помощью объявления общности (generic declaration) в объявлении объекта можно определить одну или большее число настраиваемых констант (generic constant); это необходимо сделать до объявления портов согласно синтаксису, указанному в табл. 4.46. Каждую поименованную константу можно использовать в определении архитектуры данного объекта, а задание ее значения откладывается до того момента, когда этот объект будет подвергаться обработке оператором component из другой архитектуры. Значения присваиваются настраиваемым константам в этом операторе component с помощью предложения generic лгартаким же способом, какой употреблен в предложении port map. В табл. 4.47 приведен пример, в котором одновременно используются инструмент generic и оператор generate для создания шинного инвертора с задаваемой пользователем разрядностью. В программе, представленной в табл. 4.48, обрабатывается несколько копий такого инвертора, каждый со своим числом сигнальных линий. Табл. 4.46. Синтаксис entity entrty-name is объявления общности в generic (constant-names : constant-type; объявлении объекта constant-names : constant-type; constant-names : constant-type); port (signal-names : mode sigtml-type; signal-names : mode signal-type; signal-names : mode signal-type); end entity-name; ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |