реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> переход из одной системы исчисления в другую, переход из одной системы исчисления в другую
dgordgee
сообщение Nov 15 2009, 18:01
Сообщение #1





Группа: Участник
Сообщений: 9
Регистрация: 9-02-07
Из: troitsk
Пользователь №: 25 208



Люди, такая тема:
написал прогу которая запоминает числа вводимые с клавиатуры. В перспективе эти числа коэффициенты деления. Они двухзначные.
Например: нажимается кнопка 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
Go to the top of the page
 
+Quote Post
Methane
сообщение Nov 15 2009, 18:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(dgordgee @ Nov 15 2009, 21:01) *
Обращаюсь к, компетентным в этом вопросе, людям: "подскажите ПЛИЗ, как осуществляется переход из hex в dec или хотя бы в bin на vhdl.

Таблица. Или два счетчика. Вообще вы что-то явно не так делаете.
Go to the top of the page
 
+Quote Post
sazh
сообщение Nov 15 2009, 20:49
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(dgordgee @ Nov 15 2009, 21:01) *
это в hex представлении 28 а не в десятичной. В dec это 40


Видимо Вам нужно реализовать алгоритм перехода bcd - bin2 (например У Тицца и Шенка описан)
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Nov 16 2009, 05:15
Сообщение #4


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



делитель надо десятичный сделать, для которого числа вводишь
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 16 2009, 05:27
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



на форуме выкладывалось, что то вроде вот этого

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


--------------------
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Nov 16 2009, 09:26
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



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);
Go to the top of the page
 
+Quote Post
dgordgee
сообщение Nov 19 2009, 10:19
Сообщение #7





Группа: Участник
Сообщений: 9
Регистрация: 9-02-07
Из: troitsk
Пользователь №: 25 208



Цитата(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 тебе
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th July 2025 - 10:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01391 секунд с 7
ELECTRONIX ©2004-2016