Forth http://fforum.winglion.ru/ |
|
Вот так. http://fforum.winglion.ru/viewtopic.php?f=11&t=132 |
Страница 1 из 2 |
Автор: | WingLion [ Пн июл 24, 2006 00:15 ] |
Заголовок сообщения: | Вот так. |
Поболтаем? |
Автор: | Hishnik [ Пн июл 24, 2006 00:16 ] |
Заголовок сообщения: | |
Лехххко! |
Автор: | mOleg [ Пн июл 24, 2006 00:34 ] |
Заголовок сообщения: | |
С чего начнем?) |
Автор: | mOleg [ Пн июл 24, 2006 00:59 ] |
Заголовок сообщения: | |
WingLion писал(а): Например, с изучения VHDL...
Лично я его совсем не знаю... А чем хуже AHDL? |
Автор: | WingLion [ Пн июл 24, 2006 01:10 ] |
Заголовок сообщения: | |
oleg писал(а): А чем хуже AHDL?
Ну, скажем так, именно мне AHDL изучать как бы не требуется |
Автор: | Hishnik [ Пн июл 24, 2006 09:35 ] |
Заголовок сообщения: | |
oleg писал(а): А чем хуже AHDL?
Не хуже, просто VHDL/Verilog выразительнее. |
Автор: | WingLion [ Пн июл 24, 2006 12:41 ] |
Заголовок сообщения: | |
Кстати, на счет выразительности. Я когда-то пытался на VHDL что-то сделать, но ничего так и не получилось (метод "копи-паста" с чужих исходников не считается). Вот, например, делаем самый простой элемент на AHDL: Код: TITLE "invertor";
SUBDESIGN test ( in1, in2 : INPUT; out : OUTPUT; ) BEGIN out = !(in1 & in2); END; Сохраняем в файл test.tdf, создаем проект в Квартусе и все компилится И вот, теперь вопрос, что этому котенку надо, чтоб он полиэтилен жрал? В смысле, как это же самое на VHDL написать? |
Автор: | Hishnik [ Пн июл 24, 2006 12:57 ] |
Заголовок сообщения: | |
Код: library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity kotenok is Port ( in1 : in STD_LOGIC; in2 : in STD_LOGIC; kout : out STD_LOGIC); end kotenok; architecture Behavioral of kotenok is begin kout <= not (in1 and in2); end Behavioral; Вот такие пирожки с котятами. |
Автор: | WingLion [ Пн июл 24, 2006 13:17 ] |
Заголовок сообщения: | |
Та-ак... Вот, что-то не кажется, что "выразительность" не сильно лучше, если не сказать наоборот. Подключение библиотек то же, по идее, как бы автоматом надо бы, хотя, как знать. И то, что в AHDL одним блоком - SUBDESIGN () BEGIN -- END; Тут на два блока разбиты, что в общем-то, не кажется более выразительным. Ладно... сейчас пойду в Квартус пытаться компилить сие ушистое чудо... А потом буду пытаться понять, как же делаются в VHDL регистры и триггеры, которые в AHDL простым объявлением делаются. Код: TITLE "invertor";
SUBDESIGN test ( in1, in2 : INPUT; out : OUTPUT; ) VARIABLE TT : DFF; -- объявление D-триггера BEGIN -- out = !(in1 & in2); -- старое TT.clk = in1; TT.d = in2; -- TT.clrn = VCC; TT.prn = VCC; -- закоментровано, -- потому что оно и по умолчанию так. out = TT; -- другой вариант того же самого без обявления TT: -- out = DFF(in2,in1,,); END; |
Автор: | Hishnik [ Пн июл 24, 2006 13:30 ] |
Заголовок сообщения: | |
WingLion писал(а): Та-ак...
Вот, что-то не кажется, что "выразительность" не сильно лучше, если не сказать наоборот. Подключение библиотек то же, по идее, как бы автоматом надо бы, хотя, как знать. И то, что в AHDL одним блоком - SUBDESIGN () BEGIN -- END; Тут на два блока разбиты, что в общем-то, не кажется более выразительным. VHDL ориентирован на более интенсивное использование библиотек. В данном случае я набрал вообще только одну строчку, остальное сгенерировалось автоматически, как только я начепятал названия выводов блока. Мощь библиотек проявляется на больших проектах. Вот триггер: Код: library IEEE;
use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity kotrigger is Port ( clk : in STD_LOGIC; d : in STD_LOGIC; q : out STD_LOGIC); end kotrigger; architecture Behavioral of kotrigger is begin process(clk) begin if clk'event and clk ='1' then q<=d; end if; end process; end Behavioral; Побольше, да. Потому что поведенческое описание. Зато его достаточно легко модифицировать, добавить сброс (синхронный или асинхронный), этот же текст в architecture опишет и регистр, потому что d и q можно объявить как std_logic_vector(7 downto 0). Текста получается побольше, чем в Verilog-е, зато необходимость явно закрывать синтаксические конструкции (if - end if) делает модуль более структурированным. |
Автор: | WingLion [ Пн июл 24, 2006 13:59 ] |
Заголовок сообщения: | |
Вот это "побольше" просто и вылезает сразу же, когда пытаешься проект с AHDL на VHDL перевести. Как подумаешь, сколько простых строчек вида S1 = DFF(s2,s3,,); надо перевести в "структурированные конструкции", тут же возникает мысль "А ну его нафиг, этот VHDL, AHDL - проще!" И это, наверняка, не только с тригерами так. Кстати, на AHDL я могу написать вот так: INCLUDE "test"; а потом его использовать в проекте где-нибудь... TT = test(input_x,input_y); ____________________________ А еще и с библиотеками вопросы. Откуда, скажем знать, какой элемент в какой либе находится? Подключать все подряд? Читать инструкции на нерусском языке? Универсальной (почти на все случаи жизни) библиотеки нету... Чего нехватает, так это книжки "VHDL для чайников". С AHDL в этом плане как-то попроще. |
Автор: | Hishnik [ Пн июл 24, 2006 14:20 ] |
Заголовок сообщения: | |
WingLion писал(а): Вот это "побольше" просто и вылезает сразу же, когда пытаешься проект с AHDL на VHDL перевести. Как подумаешь, сколько простых строчек вида S1 = DFF(s2,s3,,); надо перевести в "структурированные конструкции", тут же возникает мысль "А ну его нафиг, этот VHDL, AHDL - проще!" И это, наверняка, не только с тригерами так. На самом деле на VHDL тоже без проблем можно подключиться к "ножкам" любого компонента. Называется component instantiation Код: My_trigger : FD; port map (clk, d, q); Другое дело, что после пятого-седьмого такого триггера я закопаюсь в объявлениях и забуду, что и куда идет. Сложные системы очень хорошо делать именно на поведенческом уровне, когда в проекте 10-15 шин по 32 бита, и между регистрами надо обеспечить большое количество связей. WingLion писал(а): А еще и с библиотеками вопросы. Откуда, скажем знать, какой элемент в какой либе находится? Подключать все подряд? Читать инструкции на нерусском языке? Универсальной (почти на все случаи жизни) библиотеки нету... Можно и все подряд подключить, это же не программирование. Если что-то не требуется, в кристалле его не будет. В библиотеках могут также находиться компоненты и функции "уровня отдела" или "уровня предприятия". WingLion писал(а): Чего нехватает, так это книжки "VHDL для чайников".
С AHDL в этом плане как-то попроще. http://www.books.ru/shop/books/246792 ? |
Автор: | WingLion [ Пн июл 24, 2006 14:53 ] |
Заголовок сообщения: | |
ВАУ! |
Автор: | Дмитрий [ Вт июл 25, 2006 22:46 ] |
Заголовок сообщения: | |
Для разнообразия добавлю примеры на Верилоге... Код: // NAND2
module test( in1, in2, out ); input in1, in2; output out; assign out = !(in1 && in2); endmodule // DFF module test( in1, in2, out ); input in1, in2; output out; reg ff; always@(posedge in1)begin ff <= in2; end assign out = ff; endmodule // DFF (одно имя для регистра и для выхода) module test( in1, in2, out ); input in1, in2; output out; reg out; always@(posedge in1)begin out <= in2; end endmodule // DFF[8] module test( in1, in2, out ); parameter width = 8 `define WW witdh-1:0 input[WW] in1, in2; output[WW] out; reg[WW] out; always@(posedge in1)begin out <= in2; end endmodule // Counter[8] `define WW witdh-1:0 module test( clk, rst, out ); parameter width = 8 input clk; input rst; output[WW] out; reg[WW] out; always@(posedge clk or posedge rst)begin if(rst) out <= 0; // корректней 8'h00 или 8'b00000000 else out <= out + 1; end endmodule Я сейчас на нем в основном практически работаю для Ксайлинкса... ну и иногда и по старинке на AHDL для Альтеры. |
Автор: | WingLion [ Вт июл 25, 2006 22:59 ] |
Заголовок сообщения: | |
А VHDL с Verilog-ом путаются... Из-за первой буквы 'V'... И MAX-Plus II на Verilog страшно ругается, если его вместо VHDL подсунуть |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |