Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/135: Рейтинг темы: голосов - 135, средняя оценка - 4.66
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811

[Verilog] Обработка команд по формату Intel(D0-D7, WR, CS)

10.09.2012, 23:29. Показов 26076. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разбираюсь с Verilog

Где можно посмотреть как осуществлять обработку команд подаваемых на D0-D7 по сигналам управления WR и CS

Мне нужно обрабатывать двубайтовые команды,
то есть по задумке первый байт подается на D0-D7 потом WR и CS - для записи
потом WR и CS снимаются и на D0-D7 подается второй байт, с WR и CS для записи команды.

так вот, интересует как это обрабатывать ?

однобайтовую команду я в принципе понял как обрабатывать... а вот как ПРАВИЛЬНО организовывать ожидание второго байта для его последующей обработки ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.09.2012, 23:29
Ответы с готовыми решениями:

Icarus Verilog. GNU GPL компилятор под Verilog
...представляет собой свободную и компактную реализацию компилятора для IEEE-1364 Verilog языка описания аппаратуры. Основан на GTKWave...

Структура команд assembler для Intel
Везде написано что стандартная структура команды оператор приемник, источник. Но встретил обратную запись и не могу найти объяснение ...

Система команд микропроцессоров семейства INTEL MCS-51
Задача следующая: Используя систему команд процессора 8051, составьте алгоритм и напишите программу циклического перебора значения от 99...

37
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
12.09.2012, 13:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Леанид Ивинавич
Можно взять синхронную SROM.
смотрю.. правда пока попадатся монстры в BGA и на 2-4-8 мб с 36-72 битами ШД
самое паябельное среди таких HY57V651620B

а вот где бы найти попроще микруху ? мегабайт на 128-256 .... ?

а что за предупреждение:
Warning: Found pins functioning as undefined clocks omd/or memory enables
Info: Assuming node "clk" is an undefined clock

со вторым уже подсказали.. а это осталось...
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
12.09.2012, 14:06
always @(cs) // при изменении cs
опять же, я не спец, но мне кажется это не будет работать как вы планируете. оно НЕ будет срабатывать при любом фронте.

помнится, в квартусе можно было смотреть RTL-вид скомпиленного кода, попробуйте на простых примерах посмотреть, во что вырождаются разные конструкции - многое станет понятно.
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
12.09.2012, 14:18
[QUOTE="Ymk"][QUOTE="Цитата:[/QUOTE]
always @(cs) // при изменении cs
опять же, я не спец, но мне кажется это не будет работать как вы планируете. оно НЕ будет срабатывать при любом фронте.

я уже переписал код на работу с (posedge clk)
`define SIT_L8 3b001 // установка мл. 8 бит адреса
`define SIT_M8 3b010 // установка ср. 8 бит адреса
`define SIT_H8 3b011 // установка ст. 8 бит адреса
`define ROM_STEP 3b100 // шаг адреса при чтении
//`define ADC_SYNC 3b101 // вид синхронизации захвата
//`define ADC_START 3b110 // запуск преобразования

module EPM240T100C5(clk,wr,cs,regadr,data8,ram_ adr,ram_wr,ram_oe);

input wire clk; // тактовый сигнал

// +--------------------------------------------------+
// | Интерфейс подключения к управляющему контроллеру |
// +--------------------------------------------------+
input wire cs; // строб операции
input wire wr; // сигнал выбора операции записи\чтения
input wire [2:0] regadr; // адрес регистра для операции
input wire [7:0] data8; // шина данных плис

// +-----------------------------------------+
// | Интерфейс подключения к микросхеме SROM |
// +-----------------------------------------+
output reg [17:0] ram_adr; // шина адреса для ram
output reg ram_wr; // сигнал записи для ram
output reg ram_oe; // сигнал строба для ram

reg[17:0] adr_value; // внутренний регистр адреса ROM для операций
reg[7:0] adr_step; // шаг приращения адреса для чтения

// инициализация сигналов управления
initial
begin
ram_wr=1; // управляющие сигналы SROM
ram_oe=1; //
end

always @(posedge clk) // при изменении cs
begin
if (cs==1) // есть обращение к ПЛИС
begin
if (wr==1) // Запись значения в регистр
begin
case (regadr) // разбор записываемого значения
`SIT_L8: begin
adr_value[7:0]<=data8[7:0];
end
`SIT_M8: begin
adr_value[15:8]<=data8[7:0];
end
`SIT_H8: begin
adr_value[17:16]<=data8[1:0];
end
`ROM_STEP: begin
adr_step<=data8[0];
end
endcase
end else // операция чтения из ПЛИС
begin
ram_adr<=adr_value; // выдали адрес
ram_wr<=1; // сигнал на чтение
ram_oe<=0; // строб операции
end
end else // cs=0, нет обращения к ПЛИС
begin
// прекращение чтение SROM
ram_wr<=1; // прекращение операции SROM
ram_oe<=1; //
adr_value<=adr_value+adr_step;
end
end
endmodule
0
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
12.09.2012, 20:41
Цитата Сообщение от ВитГа
смотрю.. правда пока попадатся монстры в BGA
Практически у любого производителя такая память есть, кроме BGA чаще всего бывает 100-pin TQFP, например, IS61LPS51218A-200TQI. Разрядность чаще всего 18 или 36 бит, это хорошо, сразу два канала писать можно.

Цитата Сообщение от ВитГа
а что за предупреждение:
Warning: Found pins functioning as undefined clocks omd/or memory enables
Info: Assuming node "clk" is an undefined clock
Для нормальной работы временного анализатора все тактовые сигналы должны быть описаны, в Вашем случае нужно описать сигнал "clk". Заходите Assyknments/Settings, Category -> Timing Requirements & Options, Clock Settings -> Settings for individual clock syknals, Clocks... -> New -> New Clock Settings, вводим любое имя, Relationship to other clock settings -> Independent to other clock settings, вписываем цепь clk (или через Node Finder находим нужную цепь тактового сигнала), в Relationship to other clock settings вводим частоту и скважность. Жмем OK, при следующей перекомпиляции предупреждения быть не должно.
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
12.09.2012, 20:47
про SSROM: гм.. ничего себе цена.. на элитане минимум 600 руб без доставки :-(

по поводу сообщения - да, уже нашел, предупреждение ушло..
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
12.09.2012, 20:50
Я смотрю пока все таки на 10нс память.. (у меня в заказанной для тестов плате 50 мгц кварц стоит :-)
вернее не на память, а на диаграммы сигналов для записи\чтения:

а как на плис реализуются задержки ?
в примерах написано типа #<значение> - а вот как значение считать, и как оно реализуется не понятно :-(
может быть где то есть пример ?
0
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
13.09.2012, 03:45
Цитата Сообщение от ВитГа
Я смотрю пока все таки на 10нс память..
Вообще, синхронная статическая память применялась на древних материнках в качестве кеша. Найти можно бесплатно.

Цитата Сообщение от ВитГа
а как на плис реализуются задержки ?
В виде счетчиков, и только на целое число периодов clk.
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
13.09.2012, 08:17
то есть написание #10 - означает 10 тиков тактового сигнала который подан на специальную ножку ПЛИС ? (pin12 или pin62 для epm249t100)
или по 10 тикам сигнала имя которого упоминается в блоке always @(posedge clk) ?
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
13.09.2012, 13:26
имхо, для схемы это ничего не означает, только для симулятора - тестбенч создавать (могу жестоко ошибаться, но думаю, что вряд ли).
0
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
13.09.2012, 13:35
Я про Verilog ничего не знаю, подобные проекты пишу на AHDL.
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
15.09.2012, 00:25
Вы думаете я от вас отстал, но вы ошибаетесь, просто немного был занят :-)

Все таки думаю использовать ассинхронную память,

в связи с этим нарисовал схему генерации сигналов для SROM http://vg.ucoz.ru/ossytt/diagrammy_syknalov.xlsx

для снижения требований к SROM предполагаю использовать память с 16ти битной шиной данных. так же с 10 нс доступом

вопросы:

1. память допускает подачу одновременно сигналов WR и СE и данных (D15-D0) (это строка 5 и 6 схемы)?

2. Возможно ли по приходу синхроимпульса захватывать значение с входа ADC_D и тут же (!) выдать эти данные на выход ROM_DATA (строки 3 и 6) ?

3. можно ли как то организовать последовательную выдачу сигналов из плис, с любой пусть даже минимальной задержкой, в порядке: ROM_DATA(6 строка), ROM_CE, ROM_WR (5 строка) ? (в принципе если последние 2 сигнала можно выдавать одновременно, то значит в 2 этапа: сначала ROM_DATA, потом ROM_WR и одновременно ROM_CE)

ссылка на даташит SROM CY7C1021D http://www.cypress.com/?docID=34936

скажите что нить хорошее, или плохое, но главное чтобы правду! :-)
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
17.09.2012, 23:44
всем снова привет!

небольшой отчет о ходе работ:

начинаю раскуривать плис - оказалось очень интересным процессом !

сейчас уже могу осуществлять захват сигнала по диаграммам которые я приводил, рабочая частота 150 мгц (по симуляции до 180 мгц)

сейчас делаю интерфейс управления плис от контроллера

хочу спросить: как правильно объявляется и управляется двунаправленная шина ?

у меня 8 битная шина данных, я хочу с нее читать и на нее записывать в зависимости от сигнала wr (со стробом по cs)..

как примерно это делается ? может быть кто то делал что-то подобное?

конструкцию активно обсуждаю здесь http://vg.ucoz.ru/forum/8-20-1 (to_admin: если размещение ссылок на другие форумы запрещено, то прошу ее удалить)
0
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
18.09.2012, 00:04
"если размещение ссылок на другие форумы запрещено, то прошу ее удалить"
Да откуда вы такие напуганные приходите? :))

Вот кстати хотел спросить - кто нибудь знает хороший курс по Verilog? Так чтоб от самого простого до чего-то интересного
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
18.09.2012, 00:13
Цитата Сообщение от dsodir
"если размещение ссылок на другие форумы запрещено, то прошу ее удалить"
Да откуда вы такие напуганные приходите? :))
да на многих сайтах за это как минимум предупреждение..
на радиокоте например..
это же ссылка мой личный форум - типа раскрутка своего..
ну и в общемто "в чужой огород со своим уставом не ходят" - так что спорить бестолку (потому свой сайт и затеял - где не ставлю вообще никаких правил кроме может быть общих правил приличия, но в принципе это пока особо и не нужно - у меня форум считай для узкого круга лиц - никто кроме своих на него не ходит и меня это устраивает)

Цитата Сообщение от dsodir
Вот кстати хотел спросить - кто нибудь знает хороший курс по Verilog? Так чтоб от самого простого до чего-то интересного
я тоже ищу..
но пока не нашел..

саму логику программирования плис я наверное начал понимать:
нужно плис воспринимать не как процессор, а как набор логических элементов соединенных в схему. и схема работает параллельно от входных сигналов.. - это не процесс, а дешифратор параллельного входного кода в некий выходной код!

Verilog или другие языки скрадывают логические элементы, но писать нужно учитывая это..- первые дня 4 было совсем плохо (я фактически писал процессы), но потом чтото щелкнуло в голове и стало намного легче :-))) (может с ума сошел ? :-)))

мне Verilog понравился тем что на паскаль чем то похож (те же begin endы)
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
18.09.2012, 00:48
А точно не путаете Verilog c VHDL ???? На паскаль как раз похож VHDL ! А Verilog похож на С.
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
18.09.2012, 00:51
Цитата Сообщение от botu_dork
А точно не путаете Verilog c VHDL ???? На паскаль как раз похож VHDL ! А Verilog похож на С.
Ну тут наверное на вкус и цвет..

вот из моего проекта кусок.. на что он больше похож ? для меня си это когда скобки вместо бегинендов:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
always @(posedge clk)   // процесс захвата значений ADC и записи их в память -------------------------------------
begin
case (clk_ph)        // действие в зависимости от фазы сигнала
 
0: begin
if (adc_capt_en==1)    // если захват разрешен - то будет дальнейшее исполнение, иначе будем стоять здесь
begin
clk_ph[2:0]<=1;       // следующая фаза захват данных с АЦП
adc_enc<=1;           // подадим сигнал на захват для АЦП
ram_wr<=0;          // запишем данные которые уже на шинах
end
else ram_adr_write<=0; // если мы не в режиме захвата - установим адрес записи в ноль
end
 
1: begin
adc_enc<=0;                       // снимем команду на захват данных с АЦП
 
adc_val[7:0]<=port_adc_val[7:0];     // возьмем данные с АЦП
 
clk_ph[2:0]<=2;                    // следующая фаза команда на захват новых данных с АЦП
end
 
2: begin
adc_enc<=1;         // подадим сигнал на захват для АЦП
 
ram_wr<=1;             // режим чтения для SROM
 
clk_ph[2:0]<=3;      // следующая фаза - захват второго байта с АЦП
 
ram_adr_write<=ram_adr_write+1;        // увеличим адрес на 1 (перейдем к следующей ячейки для след. записи)
 
end
 
3: begin
adc_enc<=0;                  // снимем команду на захват данных с АЦП
 
ram_dataH[7:0]=adc_val[7:0];      // возьмем данные с АЦП
ram_dataL[7:0]=port_adc_val[7:0];  // выдадим данные для записи в SROM
 
clk_ph[2:0]<=0;               // переходим к фазе "0"
 
end
endcase
 
end
и вот VHDL
со всякими объявлениями библиотек, хотя.. тоже похож на паскаль :-)) особенно в части присваивания
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
library ieee;
use ieee.std_logic_1164.all;
.......
-- Дальше можно делать объявления std_logic
syknal a, b : std_logic;
syknal c : std_logic_vector(7 downto 0);
shared variable d : std_logic_vector(7 downto 0):="01010101";
 
-- Использование операторов loop, next, exit, if, присваивание
-- Несинтезируемый фрагмент VHDL-кода подсчитывает кол-во несовпадающих бит в двух массивах
neq := 0;
L1 : for i in 0 to 31 loop
next L1 when mem1(i) = mem2(i);
for j in 7 downto 0 loop
crash := 1;
exit L1 when (mem1(i)(j) = X or mem2(i)(j) = X);
crash := 0;
if (mem1(i)(j) /= mem2(i)(j)) then neq := neq+1;
end loop;
end loop L1;
0
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
18.09.2012, 03:12
http://ru.wikipedia.org/wiki/Verilog
Verilog 2001Дополнения к языку Verilog-95 были приняты как IEEE 1364—2001 (или Verilog-2001).

Verilog-2001 является значительно обновленным по сравнению с Verilog-95. Во-первых, он добавил поддержку знаковых переменных (в формате дополнительного кода). Прежде авторам кода приходилось реализовывать знаковые операции с использованием большого количества битовых логических операций. Та же функциональность на Verilog-2001 описывается встроенными операторами языка: +, -, /, *, >>> Был улучшен файловый ввод-вывод. Для улучшения читаемости кодов был немного изменен синтаксис, например always @*, переопределение именованных параметров, объявление заголовков функций, задач и модулей в стиле Си.
http://ru.wikipedia.org/wiki/VHDL
Средствами языка VHDL возможно проектирование на различных уровнях абстракции (поведенческом или алгоритмическом, регистровых передач, структурном), в соответствии с техническим заданием и предпочтениями разработчика. Заложена возможность иерархического проектирования, максимально реализующая себя в экстремально больших проектах с участием большой группы разработчиков. Представляется возможным выделить следующие три составные части языка: алгоритмическую — основанную на языках Ada и Pascal и придающую языку VHDL свойства языков программирования; проблемно ориентированную — в сущности и обращающую VHDL в язык описания аппаратуры; и объектно-ориентированную, интенсивно развиваемую в последнее время.
И еще множество других источников( в том числе - конференций), скажут вам - что вы не правы.
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
18.09.2012, 06:49
я согласен со всеми источниками :-)

но по мне verilog похож на паскаль.. :-) я же указал что у меня ассоциации с паскалем вызывают begin\end..
в принципе не так важно на что он похож главное ведь чтобы понятен был !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.09.2012, 06:49
Помогаю со студенческими работами здесь

Программная реализация дизассемблирования арифметических команд intel 8086
Здравствуйте,вот такая тема для курсовой работы - программная реализация дизассемблирования арифметических команд intel 8086. Знаю, что...

Нужен справочник по системе команд процессора intel core 2 duo
Помогите пожалуйста найти справочник по системе команд процессора intel core 2 duo(гугль молчит)

Почему в ассемблере intel x86 нет логических команд xnor, nand, nor?
Хотя микросхемы такой логики используются довольно часто. А если скажем можно и без них обойтись, то и NOT не нужна, ведь есть XOR.

Обработка команд джойстика
Доброго времени суток уважаемые! 8-) Имеется джостик, подключенный к COM - порту. Который передает и принимает сигналы в 8-ой системе...

Обработка команд (\comand)
Подскажите как можно сделать обработку команд с обратным слешом.. Например \name Tofers Нужно для консольного чата


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru