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

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

10.09.2012, 23:29. Показов 26061. Ответов 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
 Аватар для stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
11.09.2012, 00:11
Вопрос неясен. С чем конкретно работаете?
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
11.09.2012, 00:45
я задумал сделать цифровой запоминающий осциллограф.

p.s. я понимаю что моя самоделка никогда не станет настоящим осциллографом, а будет только показометром, меня это пока устраивает.

мне понадобился 17ти битный счетчик для формирования адреса для записи в SROM данных с АЦП. в теме мне посоветовали посмотреть в сторону ПЛИС. и я начал смотреть.

постепенно я начал осознавать какой это мощный инструмент.. и функционал у меня оформился..

используемая ПЛИС EPM240T100C5

я хочу чтобы у ПЛИС были следующие команды:
0х00 - пустая команда, нужна для сброса подаваемых команд, доп. байта нет
0х01 - передача в ПЛИС low8(Адреса для чтения из SROM), в доп. байте low8(Адреса для чтения из SROM)
0х02 - передача в ПЛИС mid8(Адреса для чтения из SROM), в доп. байте mid8(Адреса для чтения из SROM)
0х03 - передача в ПЛИС high8(Адреса для чтения из SROM), в доп байте high8(Адреса для чтения из SROM) - на деле здесь будет передаваться только один бит
0х04 - чтение байта из SROM, в доп байте - шаг инкремента адреса для чтения
0x05 - запись очередного фрейма сигнала , в доп. байте - вид синхронизации

то есть у меня все команды 2х байтовые (кроме первой (0х00) - ее я буду использовать как nop в асме)

для передачи команд хочу использовать 8ми битную ШД и 2 управляющих сигнала:
- WR - селектор записи \ чтения (при L- уровне запись)
- CS - строб команды (при L-уровне строб)

проект в quartus 9 http://vg.ucoz.ru/ossytt/EPM240T100C5.zip

правда там еще ничего нет.. задал кучку сигналов, начал писать код, и мой мозг немного поплыл из за того что я привык к описанию процессов, а тут как то нужно привязаться к сигналам :-(
сигнал clk у меня есть (на плате отладки будет кварц 50 мгц, а вообще я нашел 100 мгц генератор)

то есть обработку команд нужно привязывать к clk? или нет ?
у меня получается что это не обязательно...

вопрос возник в месте где я отловил что WR=CS=0, считал с D0-D7 код команды, потом мне нужно какой то флаг поставить что считал код, или каким образом гарантировать что плис повторно не считает с D0-D7 код команды приняв его за доп. байт ? управляющий ПЛИС контроллер (AVR) ведь не сможет быстро установить WR=CS=1 - даже если он на асме работает...

вот такие вот глупые вопросы :-( в принципе я объявил регистр
Code
1
reg woyt_cs_res;      // признак ожидания сброса cs после подачи команды
который будет флагом что с D0-D7 код уже считали, и теперь нужно ждать пока WR=CS=1 и потом пока они заново не WR=CS=0 - только после этого читать доп. байт - но уж больно страшно как то это будет выглядеть, может есть способы проще ?
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
11.09.2012, 01:32
я в этом совсем не профи, но кой-че подскажу.
Цитата Сообщение от ВитГа
то есть обработку команд нужно привязывать к clk? или нет ?
хорошим тоном (мягко говоря) считается, что в системе (плис) все работает от одного клока. каждый блок в верилоге (always ...) должен срабатывать по фронту главного клока. а внутри блока уже писать логику, по которой обрабатываются внешние сигналы.

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

следование этим простым правилам избавит от КУЧИ возможных глюков (высокое быстродействие плис, звенящие фронты и прочие бла-бла-бла мифы).

Цитата Сообщение от ВитГа
считал с D0-D7 код команды, потом мне нужно какой то флаг поставить что считал код, или каким образом гарантировать что плис повторно не считает с D0-D7 код команды приняв его за доп. байт ?
какой-то один из сигналов должен быть клоком, например, WR. как только словили его фронт, а при этом CS был активен, значит в этот момент фиксируем что нам надо (команда пришла там или что еще). в другое время никаких событий нет - ниче не делаем, команду повторно не обрабатываем:)
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
11.09.2012, 01:39
ну в принципе на счет клока в виде WR и я думал, правда для этой цели больше подходит CS (строб)

вопрос: то что найден фронт импульса (или наоборот спад) - плис сама определит? и не будет второй раз обрабатывать подпрограмму при высоком (низком) уровне тактирующего сигнала ?

ну и второй вопрос: есть ли какие нить стандартные методы обработки многобайтовых передач ? может быть какие нить коды демультиплексоров (сейчас в голову пришло что фактически у меня 16-ти битные команды передаваемые мультеплексированием по 8-ми битной шине)... ?

я еще отладочную плату с плис не получил - поэтому хочу посмотреть как правильно это пишется, ну и если не найду то после получения платы буду пробывать по своему (главное чтобы числа перепрограммирований плис хватило на эксперименты)
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
11.09.2012, 02:23
плис сама делать ничего не будет:) будет делать так, как напишете;)
напишете срабатывать по фронту - будет срабатывать только по фронту, но еще раз повторяю, хоть и можно завести внешний сигнал на тактовый вход триггера (указав его в always), делать так не рекомендуется во избежание трудноуловимых багов.
0
 Аватар для stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
11.09.2012, 02:27
Цитата Сообщение от ВитГа
ну в принципе на счет клока в виде WR и я думал, правда для этой цели больше подходит CS (строб)

...
ну и второй вопрос: есть ли какие нить стандартные методы обработки многобайтовых передач ? может быть какие нить коды демультиплексоров (сейчас в голову пришло что фактически у меня 16-ти битные команды передаваемые мультеплексированием по 8-ми битной шине)... ?
По ПЛИСАМ не подскажу, но:
1. Почитайте про шину управления в МП системах. Там для обращения к памяти формируется сигнал MREQ. Из него, флага памяти и сигналов R и W уже формируется доступ к памяти.
2. Проще всего- два 8- битных регистра- защелки. Сначала пишешь в один, потом во второй, а потом одновременно разрешаешь ОЕ-> адрес установлен. М.б. эти регистры реализуются в вашей ПЛИС.

ОП-па! У вас 60МГц?!
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
11.09.2012, 08:34
Про шину управления в МП системах знаю..
про MREQ тоже знаю, я даже ввел вначале сигнал RE (ROM/EPM) - но использовать его не хочу.. - мне нужно использовать как можно меньше линий для управления ПЛИС..

вопрос был именно по алгоритму- как реализуется последовательное чтение нескольких байт с шины на Verilog?

в принципе я думаю что такую задачу кто нить решал, подожду еще, может что подскажут...

пока у меня 50 мгц.. но в планах 100 мгц...
0
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
11.09.2012, 10:17
Ничего сложного там нет. Так и пишите, что ждать фронта на шине clock, и если WR = 1 и CS = 1 тогда.... В плис нет последовательности выполнения процедур или функций как это принято в мк. Это не мк, а логическая схема. Не надо устраивать никаких бесконечных циклов в ожидании определенного флага. прописали, что вам нужен этот флаг, и спите спокойно. Как только будет выполнено условие, то будет выполнены определенные действия. Если уж так хотите, то действия выполняются последовательно (с небольшой задержкой), а вот сами процедуры (блоки), в отличии от мк, могут выполняться параллельно.
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
11.09.2012, 13:09
Вот эта параллельность и пугает..

сейчас чуть изменил код
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
46
47
48
always @(posedge cs)  // при импульсе по cs
begin
// дешифровка записываемой в ПЛИС команды
if (wr==0) // запись команды в ПЛИС
begin
if (woyt_add_byte==0) // флаг приема первого байта
begin
woyt_add_byte=1;     // в следующий раз принимаем доп. байт
 
sommtype=data8[2:0]; // запишем полученную команду
 
if (sommtype==`NOP) woyt_add_byte=0; // у команды NOP нет доп. байта
 
end else // получаем дополнительный байт команды
begin
 
woyt_add_byte=0; // следующий принимаемый байт - команда
 
case (sommtype)  // второй байт в зависимости от команды
`SIT_L8:   begin   // установка младшей части адреса
adr_ram[7:0]=data8[7:0];
end
 
`SIT_M8:   begin     // установка средней части адреса
adr_ram[15:8]=data8[7:0];
end
 
`SIT_H8:   begin     // установка старшей части адреса
adr_ram[16]=data8[0];
end
 
`ROM_READ:   begin      // шаг приращения адреса при чтении
adr_step=data8;
end
 
`ADC_SYNC:   begin
end
 
`ADC_START:   begin
end
endcase
end
end else
begin      // чтение из памяти
 
end
 
end
и такой вопрос возник:
При записи always @(posedge cs) событие будет выполнено при нарастании импульса по линии CS один раз или возможно выполнение несколько раз ?

мне нужно чтобы блок был выполнен один раз...

И еще:
почему то при компиляции кода я получаю ошибку: Error (10137): Verilog HDL Procedural Assyknment error at EPM240T100C5.v(59): object "adr_ram" on left-homd side of assyknment must have a variable data type.
Ругается на строчку
adr_ram[7:0]=data8[7:0];

такая ошибка на каждую операцию присваивания в case
Сами линии регистры объявил так
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
input wire clk;   // тактирующий сигнал
 
input wire wr;  // сигнал выбора операции записи\чтения
input wire cs;  // строб операции
 
input wire [7:0] data8;  // шина данных\команд плис
 
output wire [16:0] adr_ram; // шина адреса для ram
 
output wire adc_enc;   // управление выборкой из АЦП
 
output wire reg_adc_cs;   // управление регистром АЦП
output wire reg_ram_cs; // управление регистром ROM
 
output wire ram_wr;      // сигнал выбора операции ROM запись\чтение
output wire ram_oe;     // строб операции с ROM
 
reg[16:0] adr_value;   // внутренний регистр адреса ROM для операций
reg adc_scan;         // признак записи значений ADC
 
reg woyt_add_byte;      // признак ожидания доп. байта команды
reg   [2:0] sommtype;     // команда
reg [7:0] adr_step;     // шаг приращения адреса для чтения ROM
что не так ? слева же у меня вроде как переменная (reg) что не нравиться компилятору?
0
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
11.09.2012, 13:40
Цитата Сообщение от ВитГа
как реализуется последовательное чтение нескольких байт с шины на Verilog?
К параллельной шине данных лучше добавить несколько линий адреса. Все регистры внутри ПЛИС будут находится в одном адресном пространстве, будет возможен произвольный доступ. Шину адреса можно сделать мультиплексной с данными, если линии экономите. Тем более, что многие микроконтроллеры имеют как раз мультиплексную внешнюю шину. Если же хотите непременно последовательный доступ, то тогда внутри ПЛИС нужно организовать счетчик адреса, который будет инкрементироваться по каждому сигналу WR или RD. Но это менее гибкий способ доступа.

Цитата Сообщение от ВитГа
пока у меня 50 мгц.. но в планах 100 мгц...
При работе на 100 МГц возникают проблемы с быстродействием SROM. Разве что применять синхронную SROM.
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
11.09.2012, 15:26
Леанид Ивинавич, не понял вашу мысль :-(

что значит к параллельной шине данных добавить несколько линий шины адреса ?

получить шину подключения вида D7-D0, A1-A0, WR, CS ?

чтобы была адресация отдельно 3ёх регистров адреса (A7-A0, A8-A15, A16) и отдельно например шага адреса при чтении ?

неее, как раз так не хочу, хочу минимум линий подключения :-(

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

про 100 мгц - я хочу поставить 10 нс память.
Например такую: CY7C1019DV33-10ZSXI (SROM 1 Mbit (128K x 8), 10 нс, 3.3 В)
даташит: http://www.shyp-mm.ru/doc/all/3155/3155.zip
128 кб мне на первых порах хватит :-)

ну и 100 мгц наверное не будет, будет максимум 80 мгц (так как у 74ACQ574 максимальная частота 90 мгц, да и AD9057 - с частотой 80 мгц захват делает)
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
11.09.2012, 15:52
вопрос остался:

почему то при компиляции кода я получаю ошибку: Error (10137): Verilog HDL Procedural Assyknment error at EPM240T100C5.v(59): object "adr_ram" on left-homd side of assyknment must have a variable data type.
Ругается на строчку
adr_ram[7:0]=data8[7:0];

такая ошибка на каждую операцию присваивания в case
Сами линии объявил так
Code
1
2
input wire [7:0] data8;  // шина данных\команд плис
output wire [16:0] adr_ram; // шина адреса для ram
что это за ошибка ?
как нужно обозвать линию adr_ram чтобы она стала Variable type ?
0
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 275
11.09.2012, 16:45
output reg [16:0] adr_ram;

Цепи представляют типы данных предназначенных для соединения между собой
структурных объектов, например, логических вентилей. Цепи не удерживают своего
состояния (за исключением типа trireg) их состояние дожно непрерывно удерживаться
(continious assyknment) выходом с логического вентиля или комбинационной схемы.
Если к цепи не подключен источник (dryver) то цепь переходит в состояние высокого
импеданса. Исключение составляет цепь типа trireg которая удерживает предыдущее
состояние (но это не регистр!).

Регистры представляют собой элементы хранения данных. Ключевое слово для
данных этого типа – reg. Регистры сохраняют свое состояние от одного назначения до
другого. Операция назначения состояния действует как триггер который изменяет
состояние элемента хранения данных. По умолчанию регистровые данные принимают
неизвестное состояние (х).
Сам сейчас делаю свой первый проект на ПЛИС, и тоже с этим столкнулся, как и все, наверное
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
11.09.2012, 21:02
вот ссылка на проект http://vg.ucoz.ru/ossytt/EPM240T100C5.zip
писано в quartus 9.1 sp2

немного опишу задачу:

при помощи плис я хочу сделать устройство захвата для самодельного цифрового осцилографа
частота дискретизации планируется в 80 мгц (АЦП AD9057)

внешний контроллер будет управлять плис, по шине состоящей из D7-D0, и сигналов управления WR и CS (10 проводов)
нужны следующие команды:
0х00- нет операции
0х01 - установка 8 младших бит адреса
0х02 - установка средних 8 бит адреса
0х03 - установка старшего бита адреса
0х04 - чтение памяти
0x05 - запуск однократного преобразования\захвата входного сигнала

команды 0х01-0х05 двубайтовые, вслед за кодом команды идет 1 байт параметра, в 0х01-0х03 - это часть адреса (всего адресуется 128 кб озу), 0х04 - шаг приращения адреса при чтении (от 1 до 255), в 0х05 - делитель частоты преобразования

описал железо:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
input wire clk;   // тактирующий сигнал (80 мгц)
input wire wr;  // сигнал выбора операции записи\чтения
input wire cs;  // строб операции
input wire [7:0] data8;  // шина данных\команд плис
 
output reg [16:0] adr_ram; // шина адреса для ram
output reg adc_enc;   // управление выборкой из АЦП
output reg reg_adc_cs;   // управление регистром АЦП
output reg reg_ram_cs; // управление регистром ROM
output reg ram_wr;      // сигнал выбора операции ROM запись\чтение
output reg ram_oe;     // строб операции с ROM
 
reg[16:0] adr_value;   // внутренний регистр адреса ROM для операций
reg woyt_add_byte;      // признак ожидания доп. байта команды
reg   [2:0] sommtype;     // команда
reg int_wr;             // сохранение копии сигнала wr
reg [7:0] adr_step;     // шаг приращения адреса для чтения ROM
дальше хочу по фронту сигнала cs считывать команду и доп. байт к ней (или читать память), выполнять какое то действие, и по спаду сигнала сбрасывать состояние управляемых устройств

для этого в always прописал реагирование на любое изменение cs

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
46
47
48
49
always @(cs)  // при изменении cs
begin
if (cs==1)
begin
// дешифровка записываемой в ПЛИС команды
int_wr<=wr;   // сохраним вид операции (чтение\запись)
 
if (wr==0) // запись команды в ПЛИС
begin
if (woyt_add_byte==0) // принимаем первый байт
begin
woyt_add_byte<=1;     // в следующий раз принимаем доп. байт
sommtype<=data8[2:0]; // запомним полученную команду
if (sommtype==`NOP) woyt_add_byte<=0; // у команды NOP нет доп. байта
 
end else // получаем дополнительный байт команды
begin
woyt_add_byte<=0; // следующий принимаемый байт - команда
case (sommtype)
`SIT_L8:  begin  // принимаем младшие 8 бит адреса для чтения
adr_value[7:0]<=data8[7:0];
end
 
`SIT_M8:  begin   // принимаем средние 8 бит адреса для чтения
adr_value[15:8]<=data8[7:0];
end
 
`SIT_H8:  begin   // принимаем старший бит адреса для чтения
adr_value[16]<=data8[0];
end
 
`ROM_READ:  begin   // принимаем шаг приращения адреса для чтения
adr_step<=data8;
end
 
`ADC_SYNC:  begin
end
 
`ADC_START:  begin
end
endcase
end
end else // здесь у нас wr=0
begin      // чтение из памяти
adr_ram<=adr_value;    // выдадим адрес для операции чтения
ram_wr<=1;  // операция чтения
ram_oe<=0;  // строб
end
end
соответственно когда сигнал cs снимается - мы прекращаем исполнение команды
Code
1
2
3
4
5
6
7
8
9
10
11
12
         else  // при спаде импульса по cs
begin
if (int_wr==1) // у нас была операция чтения ?
begin
if (sommtype==`ROM_READ)
begin
ram_oe<=1;  // отключим чтение с SROM
adr_value<=adr_value+adr_step; // прирастим адрес для чтения на шаг
end
end
end
end
этот код компилируется с какими то не понятными мне предупреждениями

Warning: Circuit may not operate. Detected 3 non-operational path(s) clocked by clock "wr" wyth clock skew larger than data delay. See Compytation Report for details.

Warning: Circuit may not operate. Detected 1 non-operational path(s) clocked by clock "cs" wyth clock skew larger than data delay. See Compytation Report for details.

Warning: Found 16 node(s) in clock paths which may be acting as ripple omd/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew
Info: Detected ripple clock "woyt_add_byte" as buffer
Info: Detected ripple clock "sommtype[2]" as buffer
Info: Detected ripple clock "int_wr" as buffer
Info: Detected ripple clock "sommtype[0]" as buffer
Info: Detected ripple clock "sommtype[1]" as buffer
Info: Detected gated clock "adr_value[16]~3" as buffer
Info: Detected gated clock "adr_value[8]~2" as buffer
Info: Detected gated clock "woyt_add_byte~2" as buffer
Info: Detected gated clock "sommtype[0]~0" as buffer
Info: Detected gated clock "adr_value[16]~0" as buffer
Info: Detected gated clock "adr_value[0]~1" as buffer
Info: Detected gated clock "rtl~0" as buffer
Info: Detected gated clock "ram_oe~1" as buffer
Info: Detected gated clock "ram_oe~0" as buffer
Info: Detected gated clock "woyt_add_byte~0" as buffer
Info: Detected gated clock "adr_ram[16]~0" as buffer

что написано не так как нужно ?

ссылка на архив проекта в начале сообщения
0
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
12.09.2012, 01:57
Цитата Сообщение от ВитГа
получить шину подключения вида D7-D0, A1-A0, WR, CS ?
Да. Вам вполне хватит трех разрядов адреса для адресации внутренних регистров ПЛИС. Не так это и много - 3 дополнительный линии. А если микроконтроллер имеет мультиплексную шину, то вообще ничего не надо, кроме сигнала ALE. Я так и делал, работал с ПЛИС как с внешней памятью для ATmega8515.

Цитата Сообщение от ВитГа
последовательный доступ хочу чтобы не задавать каждый раз адрес (таким образом я ускоряю процесс чтения из памяти), я понимаю что усложняю этим код.
Это другое. Конечно, чтение ROM должно происходить с автоинкрементом адреса. Тут пока речь шла о том, как задать начальный адрес для чтения. Для этого нужно сделать запись в регистры адреса, вот к ним доступ лучше сделать произвольный, а не последовательный.

Цитата Сообщение от ВитГа
про 100 мгц - я хочу поставить 10 нс память.
Не получится. Посмотрите диаграммы записи. Время удержания WE в низком уровне t_pwe min 7 нс. Как это обеспечить на одном периоде тактовой частоты 100 МГц?

Цитата Сообщение от ВитГа
будет максимум 80 мгц (так как у 74ACQ574 максимальная частота 90 мгц
А зачем нужны 74ACQ574, если есть ПЛИС?
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
12.09.2012, 09:00
а что за предупреждение:
Warning: Found pins functioning as undefined clocks omd/or memory enables
Info: Assuming node "clk" is an undefined clock

как это понять, что пин с неопределенной частотой ? где то еще нужно задавать частоту тактирования сигнала clk ?

и еще одно предупреждение:
Warning: Output pins are stuck at VCC or GND
Warning (13410): Pin "ram_wr" is stuck at VCC

что это означает? сигнал ram_wr я определил на простой пин -47
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
12.09.2012, 09:08
Цитата Сообщение от Леанид Ивинавич
А зачем нужны 74ACQ574, если есть ПЛИС?
хотел реализовать все на epm3064, у нее меньше ног, зато корпус попроще (есть панельки)
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
12.09.2012, 09:40
Цитата Сообщение от Леанид Ивинавич
Цитата Сообщение от ВитГа
про 100 мгц - я хочу поставить 10 нс память.
Не получится. Посмотрите диаграммы записи. Время удержания WE в низком уровне t_pwe min 7 нс. Как это обеспечить на одном периоде тактовой частоты 100 МГц?

делать два банка работающих на скорости 50 мгц со сдвигом на 1\2 такта ?
0
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
12.09.2012, 11:38
Можно взять синхронную SROM.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.09.2012, 11:38
Помогаю со студенческими работами здесь

Программная реализация дизассемблирования арифметических команд 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 Нужно для консольного чата


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru