| Форум РадиоКот 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/ |
|


