Форум РадиоКот https://radiokot.ru/forum/ |
|
двоично-десятичный преобразователь BCD https://radiokot.ru/forum/viewtopic.php?f=20&t=39853 |
Страница 1 из 3 |
Автор: | vanek882 [ Сб дек 25, 2010 17:43:43 ] |
Заголовок сообщения: | двоично-десятичный преобразователь BCD |
НА 8 входов подаётся 8-битовый двоичный код. в схеме исполmзуются 3 BCD схемы что преобразовывать числа от 0 до 255. на выходе должен быт двоично-десятичный код... если вам нетрудно помогите пожалуйста написать код. не могу понять как связать эти три схемы BCD |
Автор: | uldemir [ Сб дек 25, 2010 17:59:06 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
Микросхема 155ПР6 к вашим услугам. |
Автор: | nick17 [ Сб дек 25, 2010 18:58:24 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
Для ПЛИС код? |
Автор: | Meteor [ Сб дек 25, 2010 19:12:05 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
А может для МК? Или для ПЛИС? Или совсем для ПЗУ? |
Автор: | vanek882 [ Сб дек 25, 2010 23:51:32 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
для Плис! |
Автор: | vanek882 [ Сб дек 25, 2010 23:54:50 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
Вложение:
|
Автор: | vanek882 [ Сб дек 25, 2010 23:55:48 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
и используются три микросхемы ПР7. |
Автор: | uldemir [ Вс дек 26, 2010 10:00:23 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
А какой код вы хотите увидеть? внутренний ПР7 или их соединений? внутренний - увы, просто ПЗУ. так что обычный case...when. А соединений - через port map. это на VHDL. или надо на каком другом языке? курсач, да? |
Автор: | vanek882 [ Вс дек 26, 2010 13:36:08 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
нужен VHDL код. да курсач. |
Автор: | vanek882 [ Вс дек 26, 2010 13:45:36 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
такой должен быть примерно? library IEEE; use IEEE.std_logic_1164.all; use IEEE.STD_LOGIC_ARITH.all; use IEEE.STD_LOGIC_UNSIGNED.all; entity CNT_BCD is port ( CLK: in STD_LOGIC; RESET: in STD_LOGIC; ENABLE: in STD_LOGIC; FULL: out STD_LOGIC; BCD_U: out STD_LOGIC_VECTOR (3 downto 0); BCD_D: out STD_LOGIC_VECTOR (3 downto 0); BCD_H: out STD_LOGIC_VECTOR (3 downto 0); BCD_T: out STD_LOGIC_VECTOR (3 downto 0) ); end CNT_BCD; architecture CNT_BCD of CNT_BCD is signal COUNTER_U: INTEGER range 0 to 9; signal COUNTER_D: INTEGER range 0 to 9; signal COUNTER_H: INTEGER range 0 to 9; signal COUNTER_T: INTEGER range 0 to 9; signal IS_9999: STD_LOGIC; begin process (CLK, RESET) begin if RESET='1' then COUNTER_U <= 0; COUNTER_D <= 0; COUNTER_H <= 0; COUNTER_T <= 0; elsif CLK='1' and CLK'event then if ENABLE = '1' and IS_9999 = '0' then if COUNTER_U = 9 then COUNTER_U <= 0; if COUNTER_D = 9 then COUNTER_D <= 0; if COUNTER_H = 9 then COUNTER_H <= 0; COUNTER_T <= COUNTER_T + 1; else COUNTER_H <= COUNTER_H + 1; end if; else COUNTER_D <= COUNTER_D + 1; end if; else COUNTER_U <= COUNTER_U + 1; end if; end if; end if; end process; BCD_U <= CONV_STD_LOGIC_VECTOR(COUNTER_U,4); BCD_D <= CONV_STD_LOGIC_VECTOR(COUNTER_D,4); BCD_H <= CONV_STD_LOGIC_VECTOR(COUNTER_H,4); BCD_T <= CONV_STD_LOGIC_VECTOR(COUNTER_T,4); IS_9999 <= '1' when (COUNTER_U = 9 and COUNTER_D = 9 and COUNTER_H = 9 and COUNTER_T = 9) else '0'; FULL <= IS_9999; end CNT_BCD; |
Автор: | uldemir [ Вс дек 26, 2010 13:51:04 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
Ну а сказать где у вас затык сложно? У телепатов уже рождественские каникулы наступили. IMHO проще попросить у кого из группы, кто лучше шарит, чтобы он за определенную сумму знаний сделал вам этот курсач. |
Автор: | vanek882 [ Вс дек 26, 2010 13:54:31 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
я же прикреплял схему самого преобразователя, там же всё нарисовано в max plus II в группе вот именно что никто по этому VHDL не шарит. у всех это проблема |
Автор: | Meteor [ Вс дек 26, 2010 14:37:33 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
Ну не такой код должен быть. Зачем тут счетчики? Дешифратор должен работать без тактов (как я понимаю). Следовательно, входы - шина 8 бит Выходы: шина 12 бит. Внутри надо "отделять" сотни, десятки и единицы друг от друга. Затем уже само преобразование. |
Автор: | uldemir [ Вс дек 26, 2010 14:51:24 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
Вот полгода назад решал такую же задачку в лоб - полный аналог ПР7 получился :-) Соединяете три таких модуля по вашей схеме и имеете (почему-то точка не вводится) Код: entity bin2bcd is Port ( arg : in STD_LOGIC_VECTOR (5 downto 0); bcd : out STD_LOGIC_VECTOR (3 downto 0); bcdh: out STD_LOGIC_VECTOR (3 downto 0)); end bin2bcd; architecture Behavioral of bin2bcd is signal decoded : STD_LOGIC_VECTOR (5 downto 0); begin process(arg) begin case arg(5 downto 1) is when "00000" => decoded <= "000000"; when "00001" => decoded <= "000001"; when "00010" => decoded <= "000010"; when "00011" => decoded <= "000011"; when "00100" => decoded <= "000100"; when "00101" => decoded <= "001000"; when "00110" => decoded <= "001001"; when "00111" => decoded <= "001010"; when "01000" => decoded <= "001011"; when "01001" => decoded <= "001100"; when "01010" => decoded <= "010000"; when "01011" => decoded <= "010001"; when "01100" => decoded <= "010010"; when "01101" => decoded <= "010011"; when "01110" => decoded <= "010100"; when "01111" => decoded <= "011000"; when "10000" => decoded <= "011001"; when "10001" => decoded <= "011010"; when "10010" => decoded <= "011011"; when "10011" => decoded <= "011100"; when "10100" => decoded <= "100000"; when "10101" => decoded <= "100001"; when "10110" => decoded <= "100010"; when "10111" => decoded <= "100011"; when "11000" => decoded <= "100100"; when "11001" => decoded <= "101000"; when "11010" => decoded <= "101001"; when "11011" => decoded <= "101010"; when "11100" => decoded <= "101011"; when "11101" => decoded <= "101100"; when "11110" => decoded <= "110000"; when "11111" => decoded <= "110001"; when others => decoded <= "------"; end case; end process; bcd <= decoded (2 downto 0) & arg(0); bcdh <= "0" & decoded(5 downto 3); end Behavioral; С другой стороны - сделайте эту таблицу из 128-ми элементов и всё |
Автор: | vanek882 [ Вс дек 26, 2010 18:05:30 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
код мне более менее понятен. Но на вход же подается 8 битовый двоичный код. |
Автор: | uldemir [ Вс дек 26, 2010 18:39:03 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
Вариант 1: Ну раз понятно, в чем проблемы отмасштабировать с 5 до 7 разрядов? младший разряд нет смысла обрабатывать. Вариант 2: Я уже упомянул, что это соответствует вашей микросхеме 155ПР7 - можете командами port map соединить их в соотвествии с вашей схемой. Вариант 3: Наверное изящнее выло бы написать формулы, типа младший БКД разряд это остаток от деления аргумента на 10... итд. |
Автор: | vanek882 [ Вс дек 26, 2010 19:28:24 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
т.е например будет begin process(arg) begin case arg(5 downto 1) is when "0000000" => decoded <= "0000000000"; на схеме же 10 выходов? или как? вот я тупой... |
Автор: | uldemir [ Вс дек 26, 2010 19:56:31 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
размерность не соблюдаете. если у вас аргумент 8-разрядный, то так и пишите case arg(7 downto 0) или (7 downto 1), если младший разряд в учет не берем. А что в библиотеках книжек нет? |
Автор: | vanek882 [ Вс дек 26, 2010 20:12:25 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
я понял. как мне написать соответствие этих кодов. спасибо вам. а начать мне описывать entity bin2bcd is Port ( arg : in STD_LOGIC_VECTOR (5 downto 0); bcd : out STD_LOGIC_VECTOR (3 downto 0); bcdh: out STD_LOGIC_VECTOR (3 downto 0)); end bin2bcd; architecture Behavioral of bin2bcd is signal decoded : STD_LOGIC_VECTOR (5 downto 0); begin process(arg) begin case arg(5 downto 1) is или что здесь изменить, исходя что код 8 разрядный |
Автор: | vanek882 [ Вс дек 26, 2010 20:28:49 ] |
Заголовок сообщения: | Re: двоично-десятичный преобразователь BCD |
а число 4 в двоичной системе будет 00000100 а в двоично-десятичном 0100 что ли? |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |