НА 8 входов подаётся 8-битовый двоичный код. в схеме исполmзуются 3 BCD схемы что преобразовывать числа от 0 до 255. на выходе должен быт двоично-десятичный код...
если вам нетрудно помогите пожалуйста написать код. не могу понять как связать эти три схемы BCD
_________________ Загружая на вход компьютера "мусор", на выходе получим "мусор^32". PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
А какой код вы хотите увидеть? внутренний ПР7 или их соединений? внутренний - увы, просто ПЗУ. так что обычный case...when. А соединений - через port map. это на VHDL. или надо на каком другом языке? курсач, да?
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
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;
Ну а сказать где у вас затык сложно? У телепатов уже рождественские каникулы наступили. IMHO проще попросить у кого из группы, кто лучше шарит, чтобы он за определенную сумму знаний сделал вам этот курсач.
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Ну не такой код должен быть. Зачем тут счетчики? Дешифратор должен работать без тактов (как я понимаю). Следовательно, входы - шина 8 бит Выходы: шина 12 бит. Внутри надо "отделять" сотни, десятки и единицы друг от друга. Затем уже само преобразование.
_________________ Загружая на вход компьютера "мусор", на выходе получим "мусор^32". PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Вот полгода назад решал такую же задачку в лоб - полный аналог ПР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-ми элементов и всё
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Вариант 1: Ну раз понятно, в чем проблемы отмасштабировать с 5 до 7 разрядов? младший разряд нет смысла обрабатывать. Вариант 2: Я уже упомянул, что это соответствует вашей микросхеме 155ПР7 - можете командами port map соединить их в соотвествии с вашей схемой. Вариант 3: Наверное изящнее выло бы написать формулы, типа младший БКД разряд это остаток от деления аргумента на 10... итд.
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
т.е например будет begin process(arg) begin case arg(5 downto 1) is when "0000000" => decoded <= "0000000000"; на схеме же 10 выходов? или как? вот я тупой...
размерность не соблюдаете. если у вас аргумент 8-разрядный, то так и пишите case arg(7 downto 0) или (7 downto 1), если младший разряд в учет не берем. А что в библиотеках книжек нет?
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
я понял. как мне написать соответствие этих кодов. спасибо вам.
а начать мне описывать
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 разрядный
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения