Например TDA7294

Форум РадиоКот :: Просмотр темы - Препод по ПЛИС хочет завалить группу. Помогите вырулить.
Форум РадиоКот
https://radiokot.ru/forum/

Препод по ПЛИС хочет завалить группу. Помогите вырулить.
https://radiokot.ru/forum/viewtopic.php?f=60&t=80829
Страница 1 из 1

Автор:  taimag [ Вс ноя 18, 2012 03:41:37 ]
Заголовок сообщения:  Препод по ПЛИС хочет завалить группу. Помогите вырулить.

Здравствуйте. Так случилось что в универе у нас есть предмет где нас ДОЛЖНЫ обучать работе с ПЛИС. Но почему-то препод предпочитает рисовать всякие таблицы о том что есть внутри у ПЛИС, как взаимодействует ПЛИС и комп через PC 104. Лабораторные ведет другой препод - сам только закончил этот же универ и ничего нам объяснить не может, приходиться все самому узнавать.

Суть вопроса:
Используем ISE Web Pack.
На контрольной будут 2 вопроса:

1) Построить множитель на константу (лектор сказал будет схематично, просто изобразить что и как, без кода и прочего).
У нас на лабораторных никто ничего не знает как делать, я смог написать на VHDL следующее:
По моему варианту константа tg(PI/30). Я перевел в двоичную систему, оптимизировал константу в итоге вот что получилось.

Кстати, если кто захочет помочь - константу любую (желательно дробную) можно покзать, что бы я хоть мож по примеру разобраться (нудля схематического изображения)

Спойлерlibrary IEEE;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_1164.ALL;

entity sep_scheme is
Port ( I : in std_logic_vector(31 downto 0);
O : out std_logic_vector(63 downto 0));
end sep_scheme;

architecture Behavioral of sep_scheme is
signal tmp: std_logic_vector(63 downto 0);
begin
tmp <= ("000" & I(31 downto 0) & "00000000000000000000000000000") + ("0000000000000" & I(31 downto 0) & "0000000000000000000")+("0000000000000000000" & I(31 downto 0) & "0000000000000")+("0000000000000000000000000" & I(31 downto 0) & "0000000")+("000000000000000000000000000000" & I(31 downto 0) & "00")+("00000000000000000000000000000000" & I(31 downto 0));
O <= tmp - (("00000" & I(31 downto 0) & "000000000000000000000000000")+("0000000" & I(31 downto 0) & "0000000000000000000000000")+("0000000000" & I(31 downto 0) & "0000000000000000000000")+("000000000000000000000" & I(31 downto 0) & "00000000000")+("0000000000000000000000000000" & I(31 downto 0) & "0000"));
end Behavioral;


Так много нулей - не синтезируется sll команда, пришлось брать нужные разряды и склеивать с "0".

Так вот, нужно реализовать схематично это, а я даже не представляю как. Препод (тот что лабы ведет, молодой) тоже не может объяснить, просто съезжает с темы. Помогите пожалуйста, как оно чисто схематически (без привязки к апаратуре, на сумматорах) реализовывается покажите.

2) Память с сортировкой
До этого даже не дошли, а на зачете нужно будет тоже схематично нарисовать как оно работает. Лектор вообще ничего не объяснял по этому, лабораторные дальше множителя не сдвинулись.

В общем ждет нашу группу завал полный. Если кто знает как оно должно выглядеть, чисто схематически. нарисуйте пожалуйста. Больше действительно некуда обратиться.

P.S. С такими преподами сталкиваюсь впервые. Если не трудно спасите от завала.

P.P.S. Поясню что я делал. А именно получил такую последовательность:
Спойлер0 0001 1010 1110 1000 0001 1100 0111 0101

Оптимизировал:

Код:
0 0001 1010 1110 1000 0001 1100 0111 0101 = 15
                               | | ||
0 0001 1010 1110 1000 0001 1100 1000 0101
                       | | | |
0 0001 1010 1110 1000 0010 0000 1000 0101
           | | | |
0 0001 1011 0000 1000 0010 0000 1000 0101 = 8
        | || 
0 0001 1100 0000 1000 0010 0000 1000 0101
      | | | |
0 0010 0000 0000 1000 0010 0000 1000 0101 = 6 одиниц = 30, 20, 14, 8, 3, 1(без сдвига) ===== 5 + 4 = 9

0 0001 1010 1110 1000 0001 1100 0111 0101 - 0 0010 0000 0000 1000 0010 0000 1000 0101

 537403525 - 451419253 = 85984272


Минимизировал в связи с особенностью умножения в двоичной системе. То есть нужны только сдвиги и суммирование. Чем меньше "1" тем меньше суммирования и сдвигов. Отсюда необходимость минимизации константы. Так как оптимизированное число оказалось больше - от результата нужно отнять лишнее. В итоге все равно меньше операций сдвига и суммирования чем если бы без таких манипуляций. И да, символы " | " почему то поехали(

Автор:  Meteor [ Вс ноя 18, 2012 07:36:44 ]
Заголовок сообщения:  Re: Препод по ПЛИС хочет завалить группу. Помогите вырулить.

Во первых прекратите "скулить". Из постаноки задачи я наппример не понял ничего.
Какое умножение интересует: целочисленное или с плавающей запятой (точкой)?
Если первое, то константу можно представить так: C=2&32* tg(Pi/30)~449767923 (разрядность 32 бита)
Если второе, то нужно делать 3 операции:
1) целочисленное умножение чисел со знаком (23х23)
2) сложение порядков (8+8) с учетом знаков и переполнения
3) нормализация.
Но тогда (случай 2) разрядность будет не 64, а всего лишь 32 бита.
Подробности можно почерпнуть в первую очередь у преподавателя

Автор:  taimag [ Вс ноя 18, 2012 19:41:59 ]
Заголовок сообщения:  Re: Препод по ПЛИС хочет завалить группу. Помогите вырулить.

У препода только ухмылка на все вопросы.

Интересует умножение например на
0.432543546 или 0.245465345 - с головы числа.

Нужно схематически изобразить соединения сумматоров и регистров сдвига которые будут реализовывать данное умножение.

как к примеру реализовывали на елементах базиса Буля какую нибудь функцию. Так и тут. Только здесь функция - умножить 32 разрядное число на 0.хххххххх число (тоже 32 разряда) и вместо элементов базиса Буля - сумматоры и регистры сдвига. В интернете есть куча схем как реализовать множитель когда на вход подаются 2 числа. Мне же нужно на входе 1 число, а второе как бы "вшито в схему".

Автор:  taimag [ Вс ноя 18, 2012 21:02:35 ]
Заголовок сообщения:  Re: Препод по ПЛИС хочет завалить группу. Помогите вырулить.

Получается большая схема. Если регистр сдвига делать http://gpsguru.ru/content/view/492/32/ то 32 разряда займут много места. С сумматорами я разберусь.

Может есть другое представление для регистров сдвига? (как 1 элемент?)

Автор:  __Alexander [ Вс ноя 18, 2012 22:55:50 ]
Заголовок сообщения:  Re: Препод по ПЛИС хочет завалить группу. Помогите вырулить.

1. Самое главное - препод не имеет права спрашивать теорию/практику которые выходят за рамками учебного процесса.
2. Намекните ему, что использование данных функций в FPGA займет пару тысяч ячеек, при этом плисина (которая может это вместить) начинает стоить от 50 баксов..... и тут же давите на первый пункт .....


ps. Я сказал вполне серъезно, ничего смешного.... меньше чем на максе втором такого не получится, ну вот EPM1270GT например.
Да, есть и Xilinx и еще че-то, но думаю эффект один. )

Автор:  taimag [ Вс ноя 18, 2012 23:09:02 ]
Заголовок сообщения:  Re: Препод по ПЛИС хочет завалить группу. Помогите вырулить.

Тут суть вопроса не в возможности реализовать, а схематически изобразить. То что я реализовал на VHDL я скомпилировал. Потом посмотрел RTL схему, и Технологическую схему. На технологической оно показало что реализовало и на ЛУТах и на простых элементах... Действительно ОЧЕНЬ много было изображено всего. ПЛИС XC4VLX15 использована на 26%. Было бы неплохо хотя бы 4 разрядный вариант реализовать. Именно Сумматоры + регистры сдвига, больше ничего.

Автор:  __Alexander [ Вс ноя 18, 2012 23:16:32 ]
Заголовок сообщения:  Re: Препод по ПЛИС хочет завалить группу. Помогите вырулить.

taimag писал(а):
Тут суть вопроса не в возможности реализовать, а схематически изобразить. То что я реализовал на VHDL я скомпилировал. Потом посмотрел RTL схему, и Технологическую схему. На технологической оно показало что реализовало и на ЛУТах и на простых элементах... Действительно ОЧЕНЬ много было изображено всего. ПЛИС XC4VLX15 использована на 26%. Было бы неплохо хотя бы 4 разрядный вариант реализовать. Именно Сумматоры + регистры сдвига, больше ничего.


Ну дык, переведите ваш VHDL в схему....

Автор:  taimag [ Вс ноя 18, 2012 23:47:58 ]
Заголовок сообщения:  Re: Препод по ПЛИС хочет завалить группу. Помогите вырулить.

__Alexander писал(а):

Ну дык, переведите ваш VHDL в схему....


Там схема получается формата А1 если писать очень очень мелко. А на RTL схеме изображены просто сумматоры, но не изображены связи. Вот в
этом и проблема.

Автор:  taimag [ Вт ноя 20, 2012 15:44:15 ]
Заголовок сообщения:  Re: Препод по ПЛИС хочет завалить группу. Помогите вырулить.

тему можно закрывать. Весь поток, примерно 90 человек, было успешно завалено )))

Автор:  Meteor [ Вт ноя 20, 2012 18:09:51 ]
Заголовок сообщения:  Re: Препод по ПЛИС хочет завалить группу. Помогите вырулить.

taimag писал(а):
Весь поток, примерно 90 человек, было успешно завалено

Это типа бяки тут не нарисовали перед умножителем квадратик с константой внутри, или не соединили входы умножителя с землей и питанием...

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/