Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

SPARTAN 3E семисегмент(перевод чисел)

Чт май 03, 2012 23:50:42

необходимо написать на xilinx программу для перевода из двоичной системы в десятичную и наоборот..запуская программу мы должны увидеть значения на семисегменте микросхемы SPARTAN 3E...как это сделать?подскажите пожалуйста(((

Re: SPARTAN 3E семисегмент(перевод чисел)

Пт май 04, 2012 00:23:17

Вы, пожалуйста, ТЗ-то подкорректируйте. Вам на VHDL или на Verilog?
Нужно вывести на семисегментник какие-то числа, так получается?

Re: SPARTAN 3E семисегмент(перевод чисел)

Пт май 04, 2012 06:45:13

Для тех кто в танке, повторяю - на Spartanе. :)) - ой не удержался.
если на VHDL, то можете почитать мой проект http://haos.homeip.net/clock9572/index.html . Практически вам нужен самый первый модуль bin2seg - преобразует двоичный код в семисегментный.

Re: SPARTAN 3E семисегмент(перевод чисел)

Пт май 04, 2012 07:19:10

ОФФтоп
Что вы лезете со своими языками описания аппаратуры? Сказано же
3kivan писал(а):...должны увидеть значения на семисегменте микросхемы SPARTAN 3E..

Ну и фиг с ним что семисегмента микросхемы нет у спартана, а так же у остальных плис
По теме
Найдите проект декодера в сети и адаптируйте под себя. Я так понимаю, показывать будете натурно на отладочнике - заодно и схему поищите. Потому как переделывать часть проекта под нее придется

Re: SPARTAN 3E семисегмент(перевод чисел)

Пт май 04, 2012 13:32:17

SubDia писал(а):Вы, пожалуйста, ТЗ-то подкорректируйте. Вам на VHDL или на Verilog?
Нужно вывести на семисегментник какие-то числа, так получается?

давайте VHDL,проверю хоть,а так надо чтобы на семисегментном индикаторе показывало числа,для примера,преобразователь из двоичного в 10й,цифру 12 должно показывать не 1100,а 1и 2 на индикаторах,следовательно 0001 0010,на схеме управления насколь понял надо мультиплексоры как то поменять,но как не знаю,чтобы сначала старшие биты отхватывало,потом младшие,следовательно для преобразователя с 10 в 2 код надо чтобы 0001 0010 превращался в 1100 и показывало в двоичном значении,т.е. букву С
Вложения
плис.JPG
схема наша
(25.56 KiB) Скачиваний: 759

Re: SPARTAN 3E семисегмент(перевод чисел)

Пт май 04, 2012 14:00:02

3kivan писал(а):давайте VHDL

Ай, не угадали. Verilog, так что не помогу. Может, ребята вон подскажут (хотя, вроде и так подсказали).
Дальше по тексту ничего толком не понятно.((

Re: SPARTAN 3E семисегмент(перевод чисел)

Пт май 04, 2012 16:11:33

кто знает подскажите пожалуйста..

Re: SPARTAN 3E семисегмент(перевод чисел)

Пт май 04, 2012 16:31:38

Полтора года назад тут был один студент... viewtopic.php?f=20&t=39853&hilit=VHDL . Тоже нужно было. Но тот вроде сообразил, что двоичное надо сначала преобразовать в БКД. Правда так и не поняли тогда - сдал или нет.

Кстати, пробовал свой последний исходник из той темы применить в одной конструкции. бехивиоральная симуляция идёт, а вот синтез ни в какую - нету, говорит у меня такого деления. дели или на 2, или вообще отстань. А, скормить хотел coolrunner-у.

Дык это, топикстартер. Покажи, что получилось. Нам то курсачи лень делать. Ну если явную плюху увидим, скажем.

Я так понимаю, охота на тублерах нащелкать двоичное число и на индикаторе увидеть число?
Ну, первре, что потребуется, действительно, из двоичного получить БКД. А чтобы на индикатор вывести - там наверняка динамическую индикацию делать надо будет, или как вы сказали - мультиплексор. А за мультиплексором - преобразователь двоичного в семисегментный. за час можно написать отладить и оттестировать. с перекурами.

Re: SPARTAN 3E семисегмент(перевод чисел)

Пт май 04, 2012 23:50:48

доступ к микросхеме один раз в неделю..если уж проверять то с готовой прогой..написав прогу еще не понятно будет ли она ваще показывать то что необходимо=((

Re: SPARTAN 3E семисегмент(перевод чисел)

Сб май 05, 2012 08:45:37

нам полагается сейчас расплакаться? И еще, не знаю, как вам читают этот курс (и что за курс) - в программируемую логику не программируют программу. То что вы пишите - не программа. А описание конфигурации, описание устройства. Программы у микроконтроллеров, у микропроцессоров - они выполняют программы. А VHDL описывает, как должно вести себя устройство или из чего оно состоит (вам же рассказывали про структурное и поведенческое описание?).
Хм, глянул по каталогам, ваша платка напоминает Agilent BASYS2. Надо бы купить себе в подарок - поиграться? Хоть и раза в два дороже, чем платка была с Coolrunner, но зато всё нужное на борту. Хотя сто баксов на дороге не валяются.

Правда, плохо представляю, как вы её программируете. Скажем, чтобы сделать динамику на индикаторе, вам доступна только частота 25МГц. Чтобы её применить вам её еще поделить надо. Возможно у Спартана есть делитель частоты, но его применение требует отдельного изучения.

С другой стороны - всю логику вы можете отладить на симуляторе, а при доступе к телу придется только повозиться с файлом констрайнтов, чтобы всё на нужные выводы завести.
Последний раз редактировалось uldemir Вт май 08, 2012 18:06:01, всего редактировалось 1 раз.

Re: SPARTAN 3E семисегмент(перевод чисел)

Сб май 05, 2012 11:38:40

платка напоминает Agilent BASYS2.

Только не Agilent, а Digilent
Есть такая в наличии. К ней лучше брать и плату "расширения", потому как разъем на 50 контактов выходит едва ли не дороже размещаемого на плате.
Генератор там на 50 МГц.
Что касается делителя частоты - то проще для студентов делать обычными счетчиками(за одно и попрактикуются)
По теме - автор выкладывайте свой код, если его писали. Если не описывали - бегом за редактор. Мы только со стороны поможем советами

Re: SPARTAN 3E семисегмент(перевод чисел)

Сб май 05, 2012 12:20:35

Это у Nexys2 страшный разъём. А, и вправду Nexys2 - там есть приведенная ТС картинка. Вообще-то шикарная плата. 32М памяти... это... что-то мощное. И это студиозусы используют, чтобы лампочками моргать? А разъём на фарнеле HRS (HIROSE) - FX2-100S-1.27DSL(71) - RECEPT, 1.27MM, R/A, 100WAY стоит всего 10 долларов. Или это не он? Нет, для начала возьму платку по-скромнее.

Re: SPARTAN 3E семисегмент(перевод чисел)

Вс май 06, 2012 01:01:08

разобрался с преобразователем двоично-десятичного кода в семисегментный, а вот как сделать с десятичного в двоичный??

Re: SPARTAN 3E семисегмент(перевод чисел)

Вс май 06, 2012 06:55:13

из какого десятичного? из БКД?
так элементарно (гораздо проще чем наоборот) просто сумма чисел A*100 + B*10 + C, Если A-сотни, B-десятки и C - единицы. Умножение делается элементарно. Например на 10 ("1010") + число суммируем с самим собой два раза сдвинутым влево и результат еще раз сдвигаем влево. Ну как в столбик. На 100 ("1100100") аналогично сумма несдвинутого и сдвинутых на 3 и 4, и следом еще сдвигаем на 2. Логика понятна?

Re: SPARTAN 3E семисегмент(перевод чисел)

Чт май 10, 2012 18:40:25

uldemir писал(а):Для тех кто в танке, повторяю - на Spartanе. :)) - ой не удержался.
если на VHDL, то можете почитать мой проект http://haos.homeip.net/clock9572/index.html . Практически вам нужен самый первый модуль bin2seg - преобразует двоичный код в семисегментный.

у меня вопрос по вашему проекту.,у вас там есть преобразователь 2-10 и 10-2 в семисегмент, мне бы интересно посмотреть схему управления преобразования на xilinx,сам код понятен...

Re: SPARTAN 3E семисегмент(перевод чисел)

Чт май 10, 2012 19:05:18

Не понял, что вы хотите. Схема как таковая не составляется. Модуль описывается, скажем, поведенческой моделью, а дальше уже работа САПРа из доступных в заданном кристалле элементов соорудить необходимое. При желании, можно у САПРа попросить вывести RTL schematic, но это довольно далеко от вменяемого для человека представления.
А по поводу проекта там есть только преобразование двоичного в семисегментный. Конечно, он также попадает под определение преобразователя бинарно-кодированного-десятичного в семисегментный, но это частности.

Re: SPARTAN 3E семисегмент(перевод чисел)

Ср май 16, 2012 17:52:16

uldemir писал(а):Не понял, что вы хотите. Схема как таковая не составляется. Модуль описывается, скажем, поведенческой моделью, а дальше уже работа САПРа из доступных в заданном кристалле элементов соорудить необходимое. При желании, можно у САПРа попросить вывести RTL schematic, но это довольно далеко от вменяемого для человека представления.
А по поводу проекта там есть только преобразование двоичного в семисегментный. Конечно, он также попадает под определение преобразователя бинарно-кодированного-десятичного в семисегментный, но это частности.

так и не понял как сделать на vhdl преобразователь из десятичного в двоичный,напишите пожалуйста что и как=((все время ошибки выдает=((

Re: SPARTAN 3E семисегмент(перевод чисел)

Ср май 16, 2012 18:33:40

skipped
Последний раз редактировалось uldemir Ср май 16, 2012 23:36:46, всего редактировалось 1 раз.

Re: SPARTAN 3E семисегмент(перевод чисел)

Ср май 16, 2012 18:39:16

uldemir писал(а):
Код:
000000cccc - единицы
00000bbbb0 - десятки * 2
000bbbb000 - десятки * 8  т.е. b*2+b*8=b*10 - правильно?
0000aaaa00 - cотни * 4
0aaaa00000 - сотни * 32
aaaa000000 - сотни * 64  a*64+a*32+a*4=a*100.

И всё это суммируется. Ну, если по-тупому, то это будет выглядеть примерно так. на синтаксис и грамматику синтезируемость не проверял.
Код:
Entity bcd2bin is
    Port ( a : in std_logic_vector (3 downto 0);
           b : in std_logic_vector (3 downto 0);
           c : in std_logic_vector (3 downto 0);
           result : out std_logic_vector (9 downto 0));

architecture behavioral of bcd2bin is
signal sum1 : std_logic_vector (9 downto 0);
signal sum2 : std_logic_vector (9 downto 0);
signal sum3 : std_logic_vector (9 downto 0);
signal sum4 : std_logic_vector (9 downto 0);
signal sum5 : std_logic_vector (9 downto 0);
signal sum6 : std_logic_vector (9 downto 0);

begin
 sum1 (9 downto 0) <= "00000" & c (3 downto 0);
 sum2 (9 downto 0) <= "0000" & b (3 downto 0) & '0';
 sum3 (9 downto 0) <= "000" & b (3 downto 0) & "000";
 sum4 (9 downto 0) <= "0000" & a (3 downto 0) & "00";
 sum5 (9 downto 0) <= '0' & a(3 downto 0) & "00000";
 sum6 (9 downto 0) <= a(3 downto 0) & "000000";

 result <= sum1 + sum2 + sum3 + sum4 +sum5 +sum6;
end behavioral;
Возможно, спартан сьел бы и просто a(3 downto 0)*100+b(3 downto 0)*10+c(3 downto 0);, там же есть аппаратный умножитель. Но мне сейчас негде проверить, а сам я в такой сложной арифметике еще не силён - могу напутаться с типами данных.


спасибо..проверю завтра в универе...отпишусь..

Re: SPARTAN 3E семисегмент(перевод чисел)

Ср май 16, 2012 20:52:23

uldemir писал(а):
Код:
000000cccc - единицы
00000bbbb0 - десятки * 2
000bbbb000 - десятки * 8  т.е. b*2+b*8=b*10 - правильно?
0000aaaa00 - cотни * 4
0aaaa00000 - сотни * 32
aaaa000000 - сотни * 64  a*64+a*32+a*4=a*100.

И всё это суммируется. Ну, если по-тупому, то это будет выглядеть примерно так. на синтаксис и грамматику синтезируемость не проверял.
Код:
Entity bcd2bin is
    Port ( a : in std_logic_vector (3 downto 0);
           b : in std_logic_vector (3 downto 0);
           c : in std_logic_vector (3 downto 0);
           result : out std_logic_vector (9 downto 0));

architecture behavioral of bcd2bin is
signal sum1 : std_logic_vector (9 downto 0);
signal sum2 : std_logic_vector (9 downto 0);
signal sum3 : std_logic_vector (9 downto 0);
signal sum4 : std_logic_vector (9 downto 0);
signal sum5 : std_logic_vector (9 downto 0);
signal sum6 : std_logic_vector (9 downto 0);

begin
 sum1 (9 downto 0) <= "00000" & c (3 downto 0);
 sum2 (9 downto 0) <= "0000" & b (3 downto 0) & '0';
 sum3 (9 downto 0) <= "000" & b (3 downto 0) & "000";
 sum4 (9 downto 0) <= "0000" & a (3 downto 0) & "00";
 sum5 (9 downto 0) <= '0' & a(3 downto 0) & "00000";
 sum6 (9 downto 0) <= a(3 downto 0) & "000000";

 result <= sum1 + sum2 + sum3 + sum4 +sum5 +sum6;
end behavioral;
Возможно, спартан сьел бы и просто a(3 downto 0)*100+b(3 downto 0)*10+c(3 downto 0);, там же есть аппаратный умножитель. Но мне сейчас негде проверить, а сам я в такой сложной арифметике еще не силён - могу напутаться с типами данных.


почему то ошибку выдает=((см. скрин)
Вложения
ё10-2.JPG
ошибка
(123.72 KiB) Скачиваний: 700
Тема закрыта