-
Modest
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 2
-
Спасибо получено: 0
-
-
-
-
|
Здраствуйте. Я недавно начал изучать программирование на языке Verilog, и вот не как не могу понять следующее
Так же, в большинстве диалектов Verilog, вы можете определить массивы сигнальных шин:
wire [7:0] k [0:19]; //массив из двадцати 8-ми битных шин
Мне не понятно что такое массивы, и где они используются, так как я их не где до этого не встречал.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
dolkons
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 22
-
Спасибо получено: 1
-
-
-
-
|
имеется ввиду, что у тебя есть шины, состоящие из 8 проводов(то есть восьмибитные). А массив [0..19] это 20 шин восьмибитных. То есть есть шина k0[7..0], k1[7..0] и т.д. Вроде так...
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
Modest
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 2
-
Спасибо получено: 0
-
-
-
-
|
ну я тоже так подумал, просто уточнить хотелось, спасибо
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
nckm
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 112
-
Спасибо получено: 34
-
-
-
-
-
|
Modest пишет: Здраствуйте. Я недавно начал изучать программирование на языке Verilog, и вот не как не могу понять следующее
Так же, в большинстве диалектов Verilog, вы можете определить массивы сигнальных шин:
wire [7:0] k [0:19]; //массив из двадцати 8-ми битных шин
Мне не понятно что такое массивы, и где они используются, так как я их не где до этого не встречал.
в принципе эти массивы чем-то похожи на массивы обычных языков программирования.
вот например на языке С вы пишите:
unsigned char my_array[64];
это объявление будет обозначать место в памяти для хранения 64 байта. Но ведь каждый байт - это 8 бит.
В верилог похоже нет объявлений типа БАЙТ или СЛОВО или ДВОЙНОЕ СЛОВО.
Вместо этого объявляются сразу и размер слова и количество слов. Вот так:
reg [7:0] my_array [0:63]; //64 восьмибитных слова
Это может использоваться там, где как раз нужны массивы.
Например в проекте "AVR микропроцессор" для платы Марсоход используется массив регистров.
Ведь у процессора есть несколько/много регистров общего назначения и для операции в АЛУ выбирается только пара регистров.
Индексы в массиве выбирают нужные регистры.
Объявления массивов wire наверное нужны чтобы соединять массивы регистров.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
KhaeS
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 33
-
Спасибо получено: 0
-
-
-
-
|
А как потом обращаться к каждому из элементов?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
dolkons
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 22
-
Спасибо получено: 1
-
-
-
-
|
KhaeS пишет: А как потом обращаться к каждому из элементов?
В смысле? Если вы имеете ввиду какой либо из 64 регистров к примеру, то просто. Например вам нужен регистр под номером 20. Вы и напишете array[20]. Вот так.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
KhaeS
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 33
-
Спасибо получено: 0
-
-
-
-
|
nckm пишет: Modest пишет:
reg [7:0] my_array [0:63]; //64 восьмибитных слова
Если мне нужен 3-й бит в 34-м my_array, то я должен написать что-то вроде: my_array[34][3]?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
dolkons
-
-
Не в сети
-
Осваиваюсь на форуме
-
-
Сообщений: 22
-
Спасибо получено: 1
-
-
-
-
|
Посмотри на сайте marsohod.org. Там есть обучение Verilog. Первый урок. Там написано про это...
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
Время создания страницы: 0.134 секунд