entity bin2bcd is Port ( arg : in STD_LOGIC_VECTOR (7 downto 0); // 8 бит входные данные bcd : out STD_LOGIC_VECTOR (9 downto 0); // 2+4+4 бит выходные данные ); end bin2bcd;
architecture Behavioral of bin2bcd is signal decoded : STD_LOGIC_VECTOR (8 downto 0); // промежуточный сигнал на 1 разряд короче выходного сигнала ..... bcd <= decoded & arg(0); // на выход выдаем перекодированные данные и младший разряд аргумента неизмененный
Цитата:
а число 4 в двоичной системе будет 00000100 а в двоично-десятичном 0100 что ли?
как ни странно, да. Числа от 0 до 9 и бинарно, и в БКД выглядят одинаково.
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Эт надо у спецов максплюса спрашивать, хотя, мне кажется, где-то не хватает скобки или точки с запятой. Я вижу только одну ошибку:
Код:
digit3 <= "0000111"; -- ñàìè ïðèäóìàéòå
я его (сигнал digit3) объявил как 2-х разрядный, потому как при 8-ми разрядных входных данных может принимать только значения 0, 1 или 2 - а для этих чисел достаточно 2-х разрядов. Вы же пытаетесь присвоить 7-миразрядное значение. Кстати, мой коментарий подразумевает, что выражение для этой строчки вам все-же придется написать самостоятельно. можно, конечно, третью цифру считать, как остаток деления аргумента на 1000 и деленное на 100 по образу и подобию предыдущих двух строк (вам не кажется это смешным?) . С другой стороны, так как это число может принимать только 3 значения - может проще сделать сравнение: если меньше 100 то 0, иначе если меньше 200 то 1, иначе 2.
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
_________________ Загружая на вход компьютера "мусор", на выходе получим "мусор^32". PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Для тех кто в танке, поясняю. Дано сообщение об ошибке, в котором речь идет о несоответствии синтаксису AHDL, в то же время сам проект пишется на VHDL. Получается несрастание мозгов у МАКСа. Переделывайте проект по VHDL. (файл проекта у вас имеет расширение tdf, вместо vhd. что собственно наблюдается в сообщении)
_________________ Загружая на вход компьютера "мусор", на выходе получим "мусор^32". PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
С максом под VHDL не работал - только в квартусе. Может надо сперва сделать новый проект, в котором указать на каком языке будет описываться. Далее создать файл, в который скопировать код. При этом имя проекта и имя файла должны совпадать (в квартусе точно так надо).
_________________ Загружая на вход компьютера "мусор", на выходе получим "мусор^32". PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
_________________ Загружая на вход компьютера "мусор", на выходе получим "мусор^32". PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
_________________ Загружая на вход компьютера "мусор", на выходе получим "мусор^32". PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Последний раз редактировалось Meteor Пт дек 31, 2010 00:56:59, всего редактировалось 1 раз.
Сдается мне что это хвост... причем отложен он на следующий семестр
_________________ Загружая на вход компьютера "мусор", на выходе получим "мусор^32". PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
А теперь серьёзно. Как преобразовать бинарное в БКД? Вариант с вычислениями остатков поведенчески симулируется, но совершенно не синтезируется. Пока написал компонент 74185 таблицей и port mapом соединил вместе, чтобы получить преобразование 8-ми битного двоичного в трёх разрядное БКД. Кстати, как в port map записать, что выход не используется и висит в воздухе? Пока я их подсоединил к сигналам и они потом сокращаются, но как-то не красиво выглядит.
p.s. Нашел у дигилента процедурку BinToBcdEncoder_nDigits. Похоже, она построена по принципу десятичной коррекции. Где-то когда-то я видел этот метод, но не могу вспомнить. В гугле нашел - это "метод левого сдвига".
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Bin2BCD_16 ;Переводит двоичное двухбайтовое число в BCD формат, принцип работы не знаю, я сдул этот ;кусок кода у кого-то в инете movlw .16 movwf ctr clrf bcd1 clrf bcd2 clrf bcd3 goto new_start adjdec movlw 0x33 addwf bcd1,f addwf bcd2,f addwf bcd3,f
Да, похоже на этот принцип. Только мы тут обсуждаем аппаратные реализации, а не на микроконтроллерах. По какому принципу работает я разобрался - всё очень просто. умножение на два в БКД-логике. Единственное, что пока не ясно, какая из реализаций - табличная или вот эта со сдвигами и сумматорами в каких случаях оптимальнее - насколько много требуется макроячеек и LUTов на разных кристаллах.
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения