Например TDA7294

Форум РадиоКот • Просмотр темы - двоично-десятичный преобразователь BCD
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт июл 18, 2025 22:34:17

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 41 ]    , 2,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Вс дек 26, 2010 20:31:58 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1395
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7306
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Код:
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 и бинарно, и в БКД выглядят одинаково.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Вс дек 26, 2010 20:57:44 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1395
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7306
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
тока что забубенил - не знаю, будет ли работать, но Syntax check проходит:
Код:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity bin2bcd is
    Port ( arg : in  STD_LOGIC_VECTOR (7 downto 0);
           bcd : out  STD_LOGIC_VECTOR (9 downto 0));
end bin2bcd;

architecture Behavioral of bin2bcd is

signal digit1: STD_LOGIC_VECTOR (3 downto 0);
signal digit2: STD_LOGIC_VECTOR (3 downto 0);
signal digit3: STD_LOGIC_VECTOR (1 downto 0);
begin

digit1 <= CONV_STD_LOGIC_VECTOR((CONV_INTEGER(arg) mod 10), 4);
digit2 <= CONV_STD_LOGIC_VECTOR((((CONV_INTEGER(arg) - CONV_INTEGER(digit1)) mod 100)/10), 4);
digit3 <= "00"; -- сами придумайте
bcd <= digit3 & digit2 & digit1 ;

end Behavioral;

Провел behavioral simulation - вроде, даже работает

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Пн дек 27, 2010 21:34:59 
Родился

Зарегистрирован: Сб дек 25, 2010 17:32:39
Сообщений: 16
Рейтинг сообщения: 0
что это за ошибка? начинаю писать код вот так

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity kyrsovprimer is
Port ( arg : in STD_LOGIC_VECTOR (7 downto 0);
bcd : out STD_LOGIC_VECTOR (9 downto 0));
end kyrsovprimer;

architecture Behavioral of kyrsovprimer is

signal digit1: STD_LOGIC_VECTOR (3 downto 0);
signal digit2: STD_LOGIC_VECTOR (3 downto 0);
signal digit3: STD_LOGIC_VECTOR (1 downto 0);
begin

digit1 <= CONV_STD_LOGIC_VECTOR((CONV_INTEGER(arg) mod 10), 4);
digit2 <= CONV_STD_LOGIC_VECTOR((((CONV_INTEGER(arg) - CONV_INTEGER(digit1)) mod 100)/10), 4);
digit3 <= "0000111"; -- ñàìè ïðèäóìàéòå
bcd <= digit3 & digit2 & digit1 ;

end Behavioral;


рисунок с ошибкой пркриплён.


Вложения:
ошибка.jpg [44.1 KiB]
Скачиваний: 425
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Пн дек 27, 2010 21:57:21 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1395
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7306
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Эт надо у спецов максплюса спрашивать, хотя, мне кажется, где-то не хватает скобки или точки с запятой. Я вижу только одну ошибку:
Код:
digit3 <= "0000111"; -- ñàìè ïðèäóìàéòå
я его (сигнал digit3) объявил как 2-х разрядный, потому как при 8-ми разрядных входных данных может принимать только значения 0, 1 или 2 - а для этих чисел достаточно 2-х разрядов. Вы же пытаетесь присвоить 7-миразрядное значение.
Кстати, мой коментарий подразумевает, что выражение для этой строчки вам все-же придется написать самостоятельно. можно, конечно, третью цифру считать, как остаток деления аргумента на 1000 и деленное на 100 по образу и подобию предыдущих двух строк (вам не кажется это смешным?) . С другой стороны, так как это число может принимать только 3 значения - может проще сделать сравнение: если меньше 100 то 0, иначе если меньше 200 то 1, иначе 2.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Пн дек 27, 2010 22:23:40 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Автор, почему проект под АХДЛ создаете?

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Вт дек 28, 2010 11:02:06 
Родился

Зарегистрирован: Сб дек 25, 2010 17:32:39
Сообщений: 16
Рейтинг сообщения: 0
нет. нужно под VHDL


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Вт дек 28, 2010 12:16:50 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Для тех кто в танке, поясняю.
Дано сообщение об ошибке, в котором речь идет о несоответствии синтаксису AHDL, в то же время сам проект пишется на VHDL. Получается несрастание мозгов у МАКСа. Переделывайте проект по VHDL. (файл проекта у вас имеет расширение tdf, вместо vhd. что собственно наблюдается в сообщении)

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Вт дек 28, 2010 12:27:45 
Родился

Зарегистрирован: Сб дек 25, 2010 17:32:39
Сообщений: 16
Рейтинг сообщения: 0
я сохранил это же файл под расширением vhd, сделал потом set project current file, но он всё равно выдаёт такую ошибку


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Вт дек 28, 2010 12:41:05 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
С максом под VHDL не работал - только в квартусе. Может надо сперва сделать новый проект, в котором указать на каком языке будет описываться. Далее создать файл, в который скопировать код. При этом имя проекта и имя файла должны совпадать (в квартусе точно так надо).

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Чт дек 30, 2010 20:40:07 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1395
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7306
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
topicstarter с зачеткой еще не пробегал? :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Чт дек 30, 2010 21:58:43 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Наверное оставили на второй год

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Чт дек 30, 2010 23:03:57 
Родился

Зарегистрирован: Сб дек 25, 2010 17:32:39
Сообщений: 16
Рейтинг сообщения: 0
кого оставили на второй год?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Чт дек 30, 2010 23:50:35 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Точно не меня и не Uldemir'а :dont_know: - мы свое отучили

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Последний раз редактировалось Meteor Пт дек 31, 2010 00:56:59, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Пт дек 31, 2010 00:04:33 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1395
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7306
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Да вот любопытство заело - курсач сдан или как?

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Пт дек 31, 2010 00:58:53 
Друг Кота
Аватар пользователя

Карма: 9
Рейтинг сообщений: 96
Зарегистрирован: Пн июл 13, 2009 14:37:39
Сообщений: 3961
Откуда: Московская область, наукоград.....
Рейтинг сообщения: 0
Сдается мне что это хвост... причем отложен он на следующий семестр

_________________
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Пт дек 31, 2010 02:15:56 
Родился

Зарегистрирован: Сб дек 25, 2010 17:32:39
Сообщений: 16
Рейтинг сообщения: 0
после каникул на доп.сессии буду сдавать, потому что не успел по госту оформить и распечатать)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Ср май 30, 2012 20:16:37 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1395
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7306
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А теперь серьёзно. Как преобразовать бинарное в БКД? Вариант с вычислениями остатков поведенчески симулируется, но совершенно не синтезируется. Пока написал компонент 74185 таблицей и port mapом соединил вместе, чтобы получить преобразование 8-ми битного двоичного в трёх разрядное БКД. Кстати, как в port map записать, что выход не используется и висит в воздухе? Пока я их подсоединил к сигналам и они потом сокращаются, но как-то не красиво выглядит.

p.s. Нашел у дигилента процедурку BinToBcdEncoder_nDigits. Похоже, она построена по принципу десятичной коррекции. Где-то когда-то я видел этот метод, но не могу вспомнить. В гугле нашел - это "метод левого сдвига".

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Сб июн 02, 2012 09:57:23 
Мудрый кот
Аватар пользователя

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1789
Откуда: Северодонецк
Рейтинг сообщения: 0
может так?

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

movlw 0x03
btfss bcd1,3
subwf bcd1,f
btfss bcd2,3
subwf bcd2,f
btfss bcd3,3
subwf bcd3,f

movlw 0x30
btfss bcd1,7
subwf bcd1,f
btfss bcd2,7
subwf bcd2,f
btfss bcd3,7
subwf bcd3,f
new_start
rlf bin2,f
rlf bin1,f
rlf bcd3,f
rlf bcd2,f
rlf bcd1,f
decfsz ctr,f
goto adjdec
return

_________________
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Сб июн 02, 2012 10:08:14 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23905
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
RoboC писал(а):
может так?

Bin2BCD_16
;Переводит двоичное двухбайтовое число в BCD формат, принцип работы не знаю, я сдул этот
;кусок кода у кого-то в инете....

Не иначе как из 526-ой аппноты микрочипа? :wink:
http://ww1.microchip.com/downloads/en/A ... 00526e.pdf


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: двоично-десятичный преобразователь BCD
СообщениеДобавлено: Сб июн 02, 2012 10:21:12 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1395
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7306
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Да, похоже на этот принцип. Только мы тут обсуждаем аппаратные реализации, а не на микроконтроллерах. По какому принципу работает я разобрался - всё очень просто. умножение на два в БКД-логике. Единственное, что пока не ясно, какая из реализаций - табличная или вот эта со сдвигами и сумматорами в каких случаях оптимальнее - насколько много требуется макроячеек и LUTов на разных кристаллах.

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 41 ]    , 2,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y