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

 
 
> Получение значения, Verilog and VHDL
Алексей Т
сообщение Apr 9 2015, 07:24
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 7-04-15
Пользователь №: 86 109



Добрый день! Подскажите, пожалуйста, как получить значение из блока VHDL, а именно из вектора bcd1 или bcd10:
port( bin:in std_logic_vector(5 downto 0);
bcd1:out std_logic_vector(3 downto 0);
bcd10:out std_logic_vector(3 downto 0)
);
в регистр блока на Verilog:
module LCD_TEST (
input iCLK, iRST_N,
input wire [3:0] iTime1, // младшее число // шину я соединяю через wizard, но мне необходимо численное значение
input wire [3:0] iTime2, // старшее число

output LCD_ON, // LCD Power ON/OFF
output [7:0] LCD_DATA,
output LCD_RW,LCD_EN,LCD_RS
);

Я попробывал вот так:
reg [3:0] iT1 = iTime1[3:0];
reg [3:0] iT2 = iTime2[3:0];

Компилируется, но у меня сомнения что в iT1 и iT2 будут лежать значения векторов bcd1 и bcd10, соответсвенно.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
egorman44
сообщение Apr 9 2015, 07:39
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 141
Регистрация: 22-11-12
Из: Нижний Новгород
Пользователь №: 74 507



Цитата(Алексей Т @ Apr 9 2015, 10:24) *
reg [3:0] iT1 = iTime1[3:0];
reg [3:0] iT2 = iTime2[3:0];


На сколько я помню значение типу данных reg присваиваются в блоках always, а вышеописанным образом вы их инициализируете.

Код
reg [3:0] iT1;
reg [3:0] iT2;
always @(*) begin
  iT1 = iTime1;
  iT2 = iTime2;
end


Это если вы хотите , чтобы значение в регистрах изменялось асинхронно.
Ну и думается Вам надо как, то соединить эти два модуля, каким нибудь схемотехническим топовым модулем. Модуль на VHDL у Вас состоит их объявления портов, только ?
Go to the top of the page
 
+Quote Post
Алексей Т
сообщение Apr 9 2015, 07:43
Сообщение #3





Группа: Новичок
Сообщений: 4
Регистрация: 7-04-15
Пользователь №: 86 109



Цитата(egorman44 @ Apr 9 2015, 20:39) *
На сколько я помню значение типу данных reg присваиваются в блоках always, а вышеописанным образом вы их инициализируете.

Код
reg [3:0] iT1;
reg [3:0] iT2;
always @(*) begin
  iT1 = iTime1;
  iT2 = iTime2;
end


Это если вы хотите , чтобы значение в регистрах изменялось асинхронно.
Ну и думается Вам надо как, то соединить эти два модуля, каким нибудь схемотехническим топовым модулем. Модуль на VHDL у Вас состоит их объявления портов, только ?

нет, там выполняются операции, вот это результат я хотел бы получать в reg блока на Verilog.
Код
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

-- For CONV_STD_LOGIC_VECTOR:
use ieee.std_logic_arith.all;

entity bin2bcd_5bit is
port( bin:in std_logic_vector(5 downto 0);
bcd1:out std_logic_vector(3 downto 0);
bcd10:out std_logic_vector(3 downto 0)
);

end bin2bcd_5bit;

architecture converter_behavior of bin2bcd_5bit is
begin
process(bin)
variable i : integer range 0 to 59;
variable i1 : integer range 0 to 9;
begin
i := conv_integer(bin);
i1 := i / 10;
bcd10 <= CONV_STD_LOGIC_VECTOR(i1, 4);
i1 := i rem 10;
bcd1 <= CONV_STD_LOGIC_VECTOR(i1, 4);
end process;
end converter_behavior;


Сообщение отредактировал Алексей Т - Apr 9 2015, 07:46
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 5th August 2025 - 16:04
Рейтинг@Mail.ru


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