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

 
 
> Получение значения, 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
Ответов
des00
сообщение Apr 9 2015, 09:50
Сообщение #2


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

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



Цитата(Алексей Т @ Apr 9 2015, 15:24) *
Компилируется, но у меня сомнения что в iT1 и iT2 будут лежать значения векторов bcd1 и bcd10, соответсвенно.

сомнения правильные

Код
wire [3:0] iT1 = iTime1[3:0];
wire [3:0] iT2 = iTime2[3:0];

или

wire [3:0] iT1;
wire [3:0] iT2;

assign iT1 = iTime1[3:0];
assign iT2 = iTime2[3:0];

или

reg [3:0] iT1;
reg [3:0] iT2;

always @(*)
  iT1 = iTime1[3:0];
  iT2 = iTime2[3:0];
end


--------------------
Go to the top of the page
 
+Quote Post
Алексей Т
сообщение Apr 10 2015, 07:48
Сообщение #3





Группа: Новичок
Сообщений: 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

какой вариант более лучше по вашему мнению такой как у вас или вышеизложенный? Спасибо большое.
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 10 2015, 13:37
Сообщение #4


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

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



Цитата(Алексей Т @ Apr 10 2015, 15:48) *
Я заметил, что вы в списке чувствительности блока always указываете все сигналы модуля. Поэтому я опять в заблуждении.

это не так. в верилоге запись always @(*) аналогична VHDL-2008 process(all). Т.е. это своего рода подстановка в список чувствительности процесса всех входных сигналов процесса. Т.е. это процессы описывающие комбинационную логику.
Цитата
какой вариант более лучше по вашему мнению такой как у вас или вышеизложенный? Спасибо большое.

Тот вариант что привели вы, будет моделироваться, но процесс будет вызываться в каждом дельта-цикле движка симулятора. Результат синтеза, будет зависеть от логики работы синтезатора, от нормальной работающей схемы, до полного игнорирования модуля. Нужно сделать список чувствительности и добавить в него сигнал iT2. Насчет выбора каждый решает сам, они одинаковые по функциональности, но на вкус и цвет все фломастеры разные.


--------------------
Go to the top of the page
 
+Quote Post



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

 


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


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