Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: переход из одной системы исчисления в другую
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
dgordgee
Люди, такая тема:
написал прогу которая запоминает числа вводимые с клавиатуры. В перспективе эти числа коэффициенты деления. Они двухзначные.
Например: нажимается кнопка 2 а потом кнопка 8.
Я склеиваю эти два лоджик вектора с помощью конкьютинации & и в вейвформере вижу 28, но это ни фига не 28.......................... sad.gif
это в hex представлении 28 а не в десятичной. В dec это 40

Обращаюсь к, компетентным в этом вопросе, людям: "подскажите ПЛИЗ, как осуществляется переход из hex в dec или хотя бы в bin на vhdl.

Ведь знаю что можно подключить библиотеку use IEEE.STD_LOGIC_ARITH.all;
и потом в dec виде задавать лоджик векторы с помощью <= conv_std_logic_vector(0, 7);
наверняка можно и из hex как то конвертировать в bin уж больно не хочется кодер в сто строк писать blush.gif
Methane
Цитата(dgordgee @ Nov 15 2009, 21:01) *
Обращаюсь к, компетентным в этом вопросе, людям: "подскажите ПЛИЗ, как осуществляется переход из hex в dec или хотя бы в bin на vhdl.

Таблица. Или два счетчика. Вообще вы что-то явно не так делаете.
sazh
Цитата(dgordgee @ Nov 15 2009, 21:01) *
это в hex представлении 28 а не в десятичной. В dec это 40


Видимо Вам нужно реализовать алгоритм перехода bcd - bin2 (например У Тицца и Шенка описан)
rv3dll(lex)
делитель надо десятичный сделать, для которого числа вводишь
des00
на форуме выкладывалось, что то вроде вот этого

CODE

module bin2bcd
(
clk ,
bin ,
bcd ,
enable_rd_bcd
);

//------------------------------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------------------------------

input logic clk ;
input logic [12 : 0] bin ;
output logic [15 : 0] bcd ;
output logic enable_rd_bcd;

//------------------------------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------------------------------
typedef logic [15:0] bcd_t;
typedef logic [12:0] bin_t;
typedef logic [3:0] dec_t;

dec_t ct_bit;
bin_t bin_rg;
bcd_t bcd_rg;

//------------------------------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------------------------------

initial ct_bit = '0;

always_ff @ (posedge clk) begin
enable_rd_bcd <= (ct_bit == 0);
//
if (ct_bit == 0) begin
bcd <= bcd_rg;
bcd_rg <= '0;
bin_rg <= bin;
ct_bit <= 4'd13;
end
else begin
bcd_rg <= correct(bcd_rg, bin_rg[12]);
bin_rg <= (bin_rg << 1);
ct_bit <= ct_bit - 1'b1;
end
end

function automatic dec_t correct_decade ( input dec_t decade) ;
correct_decade = (decade > 4) ? (decade + 4'd3) : decade;
endfunction

function automatic bcd_t correct (input bcd_t data, input bit bitdata);
int i;
begin
for (i = 0; i < 4; i++)
correct [4*i +: 4] = correct_decade(data[4*i +: 4]);
correct = (correct << 1) | bitdata;
end
endfunction

endmodule
DmitryR
signal hidigit:std_logic_vector(3 downto 0);
signal lowdigit:std_logic_vector(3 downto 0);
signal result:std_logic_vector(7 downto 0);

result<=hidigit*conv_std_logic_vector(10,4)+("0000" & lowdigit);
dgordgee
Цитата(DmitryR @ Nov 16 2009, 12:26) *
signal hidigit:std_logic_vector(3 downto 0);
signal lowdigit:std_logic_vector(3 downto 0);
signal result:std_logic_vector(7 downto 0);

result<=hidigit*conv_std_logic_vector(10,4)+("0000" & lowdigit);



Благодарю, DmitryR , выручил RESPECT тебе
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.