|
|
  |
Получение значения, Verilog and VHDL |
|
|
|
Apr 9 2015, 07:24
|
Группа: Новичок
Сообщений: 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, соответсвенно.
|
|
|
|
|
Apr 9 2015, 07:39
|
Частый гость
 
Группа: Свой
Сообщений: 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 у Вас состоит их объявления портов, только ?
|
|
|
|
|
Apr 9 2015, 07:43
|
Группа: Новичок
Сообщений: 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
|
|
|
|
|
Apr 9 2015, 07:50
|
Частый гость
 
Группа: Свой
Сообщений: 141
Регистрация: 22-11-12
Из: Нижний Новгород
Пользователь №: 74 507

|
Цитата(Алексей Т @ Apr 9 2015, 10:43)  нет, там выполняются операции, вот это результат я хотел бы получать в reg блока на Verilog. Ну так соедините все это дело. Модуль VHDL и Verilog модуль, в топовом схематике. UPD: Хотя как пишут, можно использовать оба модуля в проекте если Ваш синтезатор поддерживает оба языка, и в качестве топового модуля использовать HDL. Если выбрали в качестве топового модуля Verilog, то VHDL модуль объявите как если бы он был написан на Verilog'e.
|
|
|
|
|
Apr 9 2015, 09:25
|
Группа: Новичок
Сообщений: 4
Регистрация: 7-04-15
Пользователь №: 86 109

|
Цитата(egorman44 @ Apr 9 2015, 20:50)  Ну так соедините все это дело. Модуль VHDL и Verilog модуль, в топовом схематике.
UPD: Хотя как пишут, можно использовать оба модуля в проекте если Ваш синтезатор поддерживает оба языка, и в качестве топового модуля использовать HDL. Если выбрали в качестве топового модуля Verilog, то VHDL модуль объявите как если бы он был написан на Verilog'e. Спасибо, я это понял в качестве топового у меня "Графика"=)) у меня проблема записи значения из HDL блока, в блок на Verilog в reg. Я так понял что присваивание надо выполнять в блоке always. Вот таким образом: Код reg iT1 = iTime1; Или не так? Меня смущает что тип wire будет присвоен типу reg. Разърядность их одинакова (iT1 и iTime1).
|
|
|
|
|
Apr 10 2015, 07:48
|
Группа: Новичок
Сообщений: 4
Регистрация: 7-04-15
Пользователь №: 86 109

|
Цитата(des00 @ Apr 9 2015, 22:50)  сомнения правильные Я заметил, что вы в списке чувствительности блока always указываете все сигналы модуля. Поэтому я опять в заблуждении. В инете скачал код, там вообще идёт так, например: Код always begin case(iT2) 0: ch2 <= 9'h130; 1: ch2 <= 9'h131; 2: ch2 <= 9'h132; 3: ch2 <= 9'h133; 4: ch2 <= 9'h134; 5: ch2 <= 9'h135; 6: ch2 <= 9'h136; 7: ch2 <= 9'h137; 8: ch2 <= 9'h138; 9: ch2 <= 9'h139; default: ch2 <= 9'dx; endcase end какой вариант более лучше по вашему мнению такой как у вас или вышеизложенный? Спасибо большое.
|
|
|
|
|
Apr 10 2015, 13:37
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Алексей Т @ Apr 10 2015, 15:48)  Я заметил, что вы в списке чувствительности блока always указываете все сигналы модуля. Поэтому я опять в заблуждении. это не так. в верилоге запись always @(*) аналогична VHDL-2008 process(all). Т.е. это своего рода подстановка в список чувствительности процесса всех входных сигналов процесса. Т.е. это процессы описывающие комбинационную логику. Цитата какой вариант более лучше по вашему мнению такой как у вас или вышеизложенный? Спасибо большое. Тот вариант что привели вы, будет моделироваться, но процесс будет вызываться в каждом дельта-цикле движка симулятора. Результат синтеза, будет зависеть от логики работы синтезатора, от нормальной работающей схемы, до полного игнорирования модуля. Нужно сделать список чувствительности и добавить в него сигнал iT2. Насчет выбора каждый решает сам, они одинаковые по функциональности, но на вкус и цвет все фломастеры разные.
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|