реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Про ПЛИС и VHDL, Некоторые вопосы
Грендайзер
сообщение Aug 3 2011, 05:50
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Спасибо, ваши ответы наверно самое конкретное и понятное, что я нашёл в интернете=)
Go to the top of the page
 
+Quote Post
whiteTigr
сообщение Aug 4 2011, 12:35
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 25-07-11
Пользователь №: 66 407



Предложу пример модуля работы с плавающей точкой.

Код
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity matem is
     Port ( clk40    : in  STD_LOGIC;
            clk160    : in  STD_LOGIC;
              iowr : in  STD_LOGIC;
           st : in  STD_LOGIC;
           addr : in  STD_LOGIC_VECTOR (31 downto 0);
           data : in  STD_LOGIC_VECTOR (31 downto 0);
           dq : out  STD_LOGIC_VECTOR (31 downto 0)
              );
end matem;

architecture Behavioral of matem is

signal ma, mb, madd, mmult, mdiv, f_to_s, s_to_f, msqrt : std_logic_VECTOR(31 downto 0);
signal mampl, matan: std_logic_vector(31 downto 0);
signal mcmp_int: std_logic_VECTOR(0 downto 0);
signal mcmp: std_logic_vector(31 downto 0);
signal op: std_logic_vector(5 downto 0);

component f_add
    port (
    a: IN std_logic_VECTOR(31 downto 0);
    b: IN std_logic_VECTOR(31 downto 0);
     operation: in std_logic_vector(5 downto 0);
    clk: IN std_logic;
    result: OUT std_logic_VECTOR(31 downto 0));
end component;
component f_cmp
    port (
    a: IN std_logic_VECTOR(31 downto 0);
    b: IN std_logic_VECTOR(31 downto 0);
     operation: in std_logic_vector(5 downto 0);
    clk: IN std_logic;
    result: OUT std_logic_VECTOR(0 downto 0));
end component;
component f_mult
    port (
    a: IN std_logic_VECTOR(31 downto 0);
    b: IN std_logic_VECTOR(31 downto 0);
    clk: IN std_logic;
    result: OUT std_logic_VECTOR(31 downto 0));
end component;
component s_f
    port (
    a: IN std_logic_VECTOR(31 downto 0);
    clk: IN std_logic;
    result: OUT std_logic_VECTOR(31 downto 0));
end component;
component f_s
    port (
    a: IN std_logic_VECTOR(31 downto 0);
    clk: IN std_logic;
    result: OUT std_logic_VECTOR(31 downto 0));
end component;
component f_div
    port (
    a: IN std_logic_VECTOR(31 downto 0);
    b: IN std_logic_VECTOR(31 downto 0);
    clk: IN std_logic;
    result: OUT std_logic_VECTOR(31 downto 0));
end component;


begin
fadd : f_add
        port map (
            a => ma,
            b => mb,
                operation => op,
            clk => clk160,
            result => madd);
fcmp : f_cmp
        port map (
            a => ma,
            b => mb,
                operation => op,
            clk => clk160,
            result => mcmp_int);
fmult : f_mult
        port map (
            a => ma,
            b => mb,
            clk => clk160,
            result => mmult);
sf : s_f
        port map (
            a => ma,
            clk => clk160,
            result => s_to_f);
fsa : f_s
        port map (
            a => ma,
            clk => clk160,
            result => f_to_s);
fdiv : f_div
        port map (
            a => ma,
            b => mb,
            clk => clk160,
            result => mdiv);

process(clk40)
begin
    if rising_edge(clk40) then
        if iowr = '1' and conv_integer(addr) = 1505 then ma <= data; end if;
        if iowr = '1' and conv_integer(addr) = 1506 then mb <= data; end if;
        if iowr = '1' and conv_integer(addr) = 1507 then op <= data(5 downto 0); end if;
    end if;
end process;

mcmp <= x"FFFFFFFF" when mcmp_int = "1" else x"00000000";

with conv_integer(addr) select
    dq <= madd   when 1500,
          mmult  when 1501,
          mdiv   when 1502,
          f_to_s when 1503,
          s_to_f when 1504,
            mcmp   when 1505,
          (others => 'Z') when others;

end Behavioral;


Использовался модуль как математический сопроцессор (хотя управляться он может как угодно) рядом с самописным процессором.
Плавающая точка реализована набором IP-ядер, формат выбран Single (одинарная точность).
f_to_s - преобразование из плавающего в целое. s_to_f - наоборот.

Управляется модуль системной шиной, которая реализована в виде 4 линий. Адреса (addr), Данных (data), ВыходныхДанных (dq), СигналаЗаписи (iowr).
Для записи операндов в модуль выставляем нужный адресс (if iowr = '1' and conv_integer(addr) = 1505 then ma <= data; end if;), например 1505 для операнда A и поднимаем в 1 сигнал iowr.
Для чтения просто выставляем адресс и читаем линию dq.

Посмотрите даташиты на эти модули, чтобы лучше понять, как они работают (например, разобраться что делает линия operation тут). При генерации любого IP-ядра, где то рядом есть кнопочка "datasheet" или что-то подобное.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Aug 4 2011, 13:15
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Да, спасибо, обязательно попробую получше разобраться с вашим кодом. Кстати, о даташитах... я тоже сгенерил одно ядро при помощи коргена, и тут у меня возникла проблема... Я мягко говоря не очень понимаю, как работают эти ядра (в смысле, как интерпретировать эти коды, состоящие в основном из компонентов, описание которых не понять где)... иии вопрос в следующим... как это всё хозяйство смоделировать то? blink.gif Я подцеплял этот прожект моделсимом... но... он пишет, что не может найти библиотеку, которая в данном проекте используется (XilinxCoreLib), и как быть, где её взять... как понять, правильно ли мой проект работает? sad.gif
Go to the top of the page
 
+Quote Post
whiteTigr
сообщение Aug 5 2011, 06:27
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 25-07-11
Пользователь №: 66 407



Цитата(Грендайзер @ Aug 4 2011, 17:15) *
Кстати, о даташитах... я тоже сгенерил одно ядро при помощи коргена, и тут у меня возникла проблема... Я мягко говоря не очень понимаю, как работают эти ядра (в смысле, как интерпретировать эти коды, состоящие в основном из компонентов, описание которых не понять где)

О даташитах вроде писалось. В диалоге создание IP-ядра должна быть кнопочка. Или, как вариант, посмотреть тут http://www.xilinx.com/support/.
На русском такую информацию вряд ли удастся найти, и это, скорее всего будет перевод этих же даташитов, только постоянно устаревающий и не учитывающий последние изменения. Хотя таблицы, временные диаграммы и т.п. знания английского, по сути, и не требуют.

Цитата(Грендайзер @ Aug 4 2011, 17:15) *
... иии вопрос в следующим... как это всё хозяйство смоделировать то? blink.gif Я подцеплял этот прожект моделсимом... но... он пишет, что не может найти библиотеку, которая в данном проекте используется (XilinxCoreLib), и как быть, где её взять... как понять, правильно ли мой проект работает?

Вот про моделирование сразу не отвечу. На рабочем месте ISE не стоит, а на второе рабочее место я приду, скорее всего, не раньше вторника.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Aug 10 2011, 08:26
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Был бы очень признателен за ответ rolleyes.gif
Go to the top of the page
 
+Quote Post
R.A.K.
сообщение Aug 10 2011, 10:23
Сообщение #21


Участник
*

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180



Цитата(Грендайзер @ Aug 10 2011, 12:26) *
Был бы очень признателен за ответ

Грендайзер, а Вы сами то поискать ответ пробовали? Погуглить, например? По ключевому слову XilinxCoreLib?
http://www.kxcad.net/electronic_Xilinx_gui...compile_lib.htm
Или с английским не лады?
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Aug 11 2011, 09:15
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Пробовал... но чё то всёравно ничего не понятно... и по вашей ссылке... чё т конкретики маловато... я этим несколько месяцев занимаюсь всего, и пока вот так на лету не могу всё в кучку собрать...
Go to the top of the page
 
+Quote Post
R.A.K.
сообщение Aug 11 2011, 10:15
Сообщение #23


Участник
*

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180



Тады вот Вам чиста канкрэтика (чиста канкретна по "моей" сцылке):
Цитата
The XilinxCoreLib library is used during functional simulation for designs that contain IP cores created by the CORE Generator™. Before starting the functional simulation of your design, you must compile the XilinxCoreLib library for your target simulator.

Ну это понятно... Или нет?
Цитата
Compiling the XilinxCoreLib Library Within ISE

The ISE Project Navigator has a Compile HDL Simulation Libraries process that can be used to compile the XilinxCoreLib Library. For the procedure to compile the library, see Compiling HDL Simulation Libraries in the ISE Help.

Кореген нагенерил Вам кучу файлов, среди них есть *.xise.
Делаем по нему дабл-клик.
Открывается ISE Project Navigator.
В дереве проекта щелкаем на самой верхней строчке. Хопа!!! В нижнем окне доступных процессов появилась строчка Compile HDL Simulation Libraries.
Щелкаем на этой строчке правой кнопкой мыши. В открывшемся подменю (мляяя!!! я превращаюсь в Зотова sad.gif ... знаете такого автора? sm.gif ) выбираем строчку Process Properties.
Дальше откроется окно с настройками. Самое главное там - указать target simulator.

Самое страшное - я сам лично этого никогда не делал (т.к. употребляю актив-хдл), поэтому ничего не гарантирую.

Цитата(Грендайзер @ Aug 11 2011, 13:15) *
Пробовал... но чё то всёравно ничего не понятно... и по вашей ссылке... чё т конкретики маловато... я этим несколько месяцев занимаюсь всего, и пока вот так на лету не могу всё в кучку собрать...

А Вы в каком классе то учитесь, если не секрет? sm.gif
Go to the top of the page
 
+Quote Post
whiteTigr
сообщение Aug 11 2011, 12:36
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 25-07-11
Пользователь №: 66 407



Цитата(R.A.K. @ Aug 11 2011, 14:15) *
(мляяя!!! я превращаюсь в Зотова sad.gif ... знаете такого автора? sm.gif )

Переписывание справок и стиль "что вижу - то пою" sm.gif

Цитата(Грендайзер @ Aug 11 2011, 13:15) *
Пробовал... но чё то всёравно ничего не понятно... и по вашей ссылке... чё т конкретики маловато... я этим несколько месяцев занимаюсь всего, и пока вот так на лету не могу всё в кучку собрать...

Вообще я не очень хорошо отношусь к позиции "непонятно всё!". Это может означать только то, что человек вообще ничего не пытался понять.
Если были хоть какие то попытки, то все начинает делится на понятные фрагменты и непонятные (которые впоследствии можно объяснить, опираясь на то, что уже понятно).

Судя по предыдущим сообщениям, Вы недопонимаете двоичную арифметику и двоичное представление чисел. Эта информация может быть найдена в доброй половине книг по любому языку программирования, или гуглением на эту тему.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Aug 12 2011, 12:25
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Цитата
А Вы в каком классе то учитесь, если не секрет? sm.gif

Я уже отучился, везде... почти... только вот, там где я учился про плис скозали примерно следующее "ПЛИС - это хитрое устройство, принцип работы которого понять очень сложно", а вот так получилось, что пришлось с ними засесть поближе, только спросить не у кого, а в одиночку всё осмыслить быстро и правильно - эт не у всех выходит sad.gif
За разъяснения, спасибо, попробую поколдовать, может что и вырулим rolleyes.gif
Go to the top of the page
 
+Quote Post
R.A.K.
сообщение Aug 12 2011, 21:20
Сообщение #26


Участник
*

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180



Цитата(Грендайзер @ Aug 12 2011, 16:25) *
Я уже отучился, везде... почти... только вот, там где я учился про плис скозали примерно следующее "ПЛИС - это хитрое устройство, принцип работы которого понять очень сложно"

Того, кто это сказал, за яйцы бы подвесить конечно не помешало бы. Но это ничего.
Вы главное с английским по-дружнее, да документацию читать не робейте. Ксайлиновские апноуты и white papers пробуйте читать (заодно по английскому словарный запас расширите sm.gif ).
Еще посоветую вот это:
1) Клайв Максфилд "Проектирование на ПЛИС. Курс молодого бойца". Эдакая обзорная книжка по теме, написана очень легко (соответственно и читается также).
2) Потехин, Тарасов "Разработка систем цифровой обработки сигналов на базе ПЛИС". Местами там, правда, жестковато (перестарались мужики sm.gif ). Но хотя бы половину первой главы стоит (про двоичную арифметику).
3) Если "Цифровую схемотехнику" Угрюмова еще не читали, то тоже порекомендую. Всю не стоит, можно первые несколько глав (булева логика, автоматы и т.д.), и главы про ПЛИС.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Aug 15 2011, 06:54
Сообщение #27


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Спасибо. А по поводу английского так это Вы с рекомендацией позновато sm.gif Уже давно читаю в основном исключительно аглицкую литературу (и действительно, английский сильно подтянулся sm.gif ). Особенно помогла (на первых порах) книга FPGA Prototyping by VHDL Examples: Xilinx Spartan-3 Version
Pong P. Chu, и ещё скачал книгу Synthesis of Arithmetic Circuits: FPGA, ASIC and Embedded Systems
Jean-Pierre Deschamps (не всё в ней мне понятно, в смысле самого материала, но кое что подчерпнул), эт я привёл если вдруг кому будит интересно... Что же касается нашей литературы, то после прочтения реда буржуинских книг, в груди появилось непонятное щемящее чувство, того, что в наши авторы не совсем понимают, порой, что они пишут... и как бы это помягче то... стиль написания книг нашими авторами, очень напоминает стиль иностранцев... более того, в некоторых наших книжках нашёл картинки и отрывки текста почти полностью содранные у иностранцев sad.gif
Go to the top of the page
 
+Quote Post
des333
сообщение Aug 27 2011, 20:26
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079



Грендайзер:

Смотрите реализации на Оpencores, например эту.


--------------------
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Sep 2 2011, 11:49
Сообщение #29


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



спасибо
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 08:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01478 секунд с 7
ELECTRONIX ©2004-2016