Тогда сначала проще просто-напросто достучаться до камня, получить сигнатуруEngineer_Keen писал(а):Чего стоит прошить элементарную прошивку мигающую светодиодом и проверить
Мелкие вопросы по МК и ПЛИС.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Реклама
Сегнатуру считывает, фьюзы устанавливает. Так что похоже неподелка.
Меня просто смутила цена в 170р за 32`ю мегу в дип корпусе.
Меня просто смутила цена в 170р за 32`ю мегу в дип корпусе.
Только абсолютная пустота бездны принесёт мне покой.
- Сообщения: 680
- Зарегистрирован: Ср фев 24, 2010 19:16:07
а что вас смущает ?TRIOD писал(а):Сегнатуру считывает, фьюзы устанавливает. Так что похоже неподелка.
Меня просто смутила цена в 170р за 32`ю мегу в дип корпусе.
НЕ РЕКЛАМА http://chipster.ru/catalog/active-compo ... el/34.html
сам брал, работает нормально с кварцем на 16 мгц...
так что 170 это даже дорого...
Хотите за 300 вам продам. А если попросите хорошенько - то и за все 500!Меня просто смутила цена в 170р за 32`ю мегу в дип корпусе.
- Сообщения: 680
- Зарегистрирован: Ср фев 24, 2010 19:16:07
вопрос про ПЛИС EPM240:Verilog
При компиляции проекта в Quartus 9.1 sp2 получаю ошибку: Error (10137): Verilog HDL Procedural Assignment error at EPM240T100C5.v(59): object "adr_ram" on left-hand side of assignment must have a variable data type.
Ругается на строчку
adr_ram[7:0]=data8[7:0];
Сами линии объявил так
что это за ошибка ?
как нужно обозвать линию adr_ram чтобы она стала Variable data type ?
При компиляции проекта в Quartus 9.1 sp2 получаю ошибку: Error (10137): Verilog HDL Procedural Assignment error at EPM240T100C5.v(59): object "adr_ram" on left-hand side of assignment must have a variable data type.
Ругается на строчку
adr_ram[7:0]=data8[7:0];
Сами линии объявил так
Код: Выделить всё
input wire [7:0] data8; // шина данных\команд плис
output wire [16:0] adr_ram; // шина адреса для ram
как нужно обозвать линию adr_ram чтобы она стала Variable data type ?
- Реклама
Или описывать как у Вас, но постоянное присваивание:
или output reg adr_ram и тогда в always
Код: Выделить всё
assign adr_ram[7:0]=data8[7:0]; Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
- Сообщения: 680
- Зарегистрирован: Ср фев 24, 2010 19:16:07
еще один вопрос про Verilog
можно ли в модуле применять два always:
первый always @(posedge cs)
второй always @(negedge cs )
они у меня один за другим стоят..
сейчас у меня выдает ошибку.. это я накосячил или нельзя такое в одном модуле делать ?
можно ли в модуле применять два always:
первый always @(posedge cs)
второй always @(negedge cs )
они у меня один за другим стоят..
сейчас у меня выдает ошибку.. это я накосячил или нельзя такое в одном модуле делать ?
- Сообщения: 680
- Зарегистрирован: Ср фев 24, 2010 19:16:07
а в одном блоке always компилятор не разрешает обрабатывать событие posedge и negedge - пишет что Error (10239): Verilog HDL Always Construct error at EPM240T100C5.v(50): event control cannot test for both positive and negative edges of variable "cs"
как отслеживать положительный и отрицательный фронт сигнала cs ?
как отслеживать положительный и отрицательный фронт сигнала cs ?
Quartus у меня далеко - проверить нечем.
Может быть попробовать изменить тип "cs":
тут вот описание есть, но для разных сигналов: http://www.marsohod.org/index.php/veril ... raycounter
Кстати, может пригодиться: http://www.marsohod.org/index.php/veril ... mment-2130
Может быть попробовать изменить тип "cs":
тут вот описание есть, но для разных сигналов: http://www.marsohod.org/index.php/veril ... raycounter
Кстати, может пригодиться: http://www.marsohod.org/index.php/veril ... mment-2130
- Сообщения: 680
- Зарегистрирован: Ср фев 24, 2010 19:16:07
вот ссылка на проект http://vg.ucoz.ru/oscill/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 - делитель частоты преобразования
описал железо:
дальше хочу по фронту сигнала cs считывать команду и доп. байт к ней (или читать память), выполнять какое то действие, и по спаду сигнала сбрасывать состояние управляемых устройств
для этого в always прописал реагирование на любое изменение cs
соответственно когда сигнал cs снимается - мы прекращаем исполнение команды
этот код компилируется с какими то не понятными мне предупреждениями
Warning: Circuit may not operate. Detected 3 non-operational path(s) clocked by clock "wr" with clock skew larger than data delay. See Compilation Report for details.
Warning: Circuit may not operate. Detected 1 non-operational path(s) clocked by clock "cs" with clock skew larger than data delay. See Compilation Report for details.
Warning: Found 16 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew
Info: Detected ripple clock "wait_add_byte" as buffer
Info: Detected ripple clock "commtype[2]" as buffer
Info: Detected ripple clock "int_wr" as buffer
Info: Detected ripple clock "commtype[0]" as buffer
Info: Detected ripple clock "commtype[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 "wait_add_byte~2" as buffer
Info: Detected gated clock "commtype[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 "wait_add_byte~0" as buffer
Info: Detected gated clock "adr_ram[16]~0" as buffer
что написано не так как нужно ?
ссылка на архив проекта в начале сообщения
писано в 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 - делитель частоты преобразования
описал железо:
Код: Выделить всё
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; // управление регистром RAM
output reg ram_wr; // сигнал выбора операции RAM запись\чтение
output reg ram_oe; // строб операции с RAM
reg[16:0] adr_value; // внутренний регистр адреса RAM для операций
reg wait_add_byte; // признак ожидания доп. байта команды
reg [2:0] commtype; // команда
reg int_wr; // сохранение копии сигнала wr
reg [7:0] adr_step; // шаг приращения адреса для чтения RAM
для этого в always прописал реагирование на любое изменение cs
Код: Выделить всё
always @(cs) // при изменении cs
begin
if (cs==1)
begin
// дешифровка записываемой в ПЛИС команды
int_wr<=wr; // сохраним вид операции (чтение\запись)
if (wr==0) // запись команды в ПЛИС
begin
if (wait_add_byte==0) // принимаем первый байт
begin
wait_add_byte<=1; // в следующий раз принимаем доп. байт
commtype<=data8[2:0]; // запомним полученную команду
if (commtype==`NOP) wait_add_byte<=0; // у команды NOP нет доп. байта
end else // получаем дополнительный байт команды
begin
wait_add_byte<=0; // следующий принимаемый байт - команда
case (commtype)
`SET_L8: begin // принимаем младшие 8 бит адреса для чтения
adr_value[7:0]<=data8[7:0];
end
`SET_M8: begin // принимаем средние 8 бит адреса для чтения
adr_value[15:8]<=data8[7:0];
end
`SET_H8: begin // принимаем старший бит адреса для чтения
adr_value[16]<=data8[0];
end
`RAM_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
Код: Выделить всё
else // при спаде импульса по cs
begin
if (int_wr==1) // у нас была операция чтения ?
begin
if (commtype==`RAM_READ)
begin
ram_oe<=1; // отключим чтение с SRAM
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" with clock skew larger than data delay. See Compilation Report for details.
Warning: Circuit may not operate. Detected 1 non-operational path(s) clocked by clock "cs" with clock skew larger than data delay. See Compilation Report for details.
Warning: Found 16 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew
Info: Detected ripple clock "wait_add_byte" as buffer
Info: Detected ripple clock "commtype[2]" as buffer
Info: Detected ripple clock "int_wr" as buffer
Info: Detected ripple clock "commtype[0]" as buffer
Info: Detected ripple clock "commtype[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 "wait_add_byte~2" as buffer
Info: Detected gated clock "commtype[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 "wait_add_byte~0" as buffer
Info: Detected gated clock "adr_ram[16]~0" as buffer
что написано не так как нужно ?
ссылка на архив проекта в начале сообщения
Не знаю альтеровкие чипы, нифига не рублю фишку в верилоге тоже. Но, вероятно, выбранный вами кристалл не имеет фишки dual edge, поэтому такая фишка у вас не катит. Как вариант распределить на два разных регистра, один по позитивному, а другой по отрицательному чтобы срабатывал. Т.е. получается два практически параллельных канала.ВитГо писал(а):как отслеживать положительный и отрицательный фронт сигнала cs ?
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Насколько знаю, ПЛИС не любят игр по обоим фронтам. Задействуйте PLL, увеличьте частоту и работайте по одному фронту.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Тупой вопрос. есть черно-белый *.png 7х1800 пикселей. Хочется его зашить в ПЗУ. Как? Точнее, как перевести его в текстовый вид? Желательно, под виндой. Вечером, под FreeBSD я это сделаю и так без проблем.
Заодно, может бросите идею где взять задаром ПЗУ этого объёма, но на питание 3.3в (в схеме перепрограммироваться не будет!), а то посмотрел выпаянные с разных плат 28F, 29F (про 27с даже не говорю) - они все на 5в. А 49lf002 - слишком мутная для использования.
Заодно, может бросите идею где взять задаром ПЗУ этого объёма, но на питание 3.3в (в схеме перепрограммироваться не будет!), а то посмотрел выпаянные с разных плат 28F, 29F (про 27с даже не говорю) - они все на 5в. А 49lf002 - слишком мутная для использования.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- Сообщения: 2316
- Зарегистрирован: Вс июн 26, 2011 20:03:21
День добрый!!
Подскажите пожалуйста с таким вопросом. Необходимо сделать так, чтобы при отключении питания МК, он записывал в EEPROM значение одной переменной, до того как работа мк прекратится. Возможно ли организовать такое?
Подскажите пожалуйста с таким вопросом. Необходимо сделать так, чтобы при отключении питания МК, он записывал в EEPROM значение одной переменной, до того как работа мк прекратится. Возможно ли организовать такое?
Вполне, контролировать наличие питания, а микроконтроллер питать от конденсатора. Как питание пропадает, делать запись, пока в конденсаторе есть заряд. Разумеется, наличие питания проверять не на конденсаторе.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- Сообщения: 2316
- Зарегистрирован: Вс июн 26, 2011 20:03:21
тогда перед кондёром надо диод поставить, а перед ним уже кинуть провод на ногу атмеги.... Я правильно вас понял? И хватит ли времени до разрядки кондёра, чтоб выполнить все эти операции (кондёр к примеру на 10мкФ) ?
Да, примерно так. Насчет ёмкости - смотрите даташит на свой любимый микроконтроллер, сколько времени длится запись, какой потребляемый при этом ток, ну и время реакции на пропадание питания Вашей программы и, исходя из этого, вычисляете необходимую ёмкость.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- Сообщения: 2316
- Зарегистрирован: Вс июн 26, 2011 20:03:21
Микроконтроллер действительно любымый
Уже пол года наверно прошло, как получил первый опыт с МК, так до сих пор с него никак не слезу 
Спасибо большое!.... Дальше думаю справлюсь)
Спасибо большое!.... Дальше думаю справлюсь)
День добрый, можно ли заменить ds1820 на ds18s20 без измнения кода? Или нужна библиотека cvavr именно для ds18s20? У кого есть такая скиньте плз...
- Сообщения: 19
- Зарегистрирован: Пт май 20, 2011 15:28:49
Всем, привет.
Честно сознаюсь, не осилил 361 страницу этого раздела и по этому извиняюсь за возможность повторения вопроса:
Решил заняться на конец ПЛИС, в частности взял себе поиграться XC9572XL, копался в датащитах, но так и не нашел информации о том, какой ток нагрузки выдерживает чип? В проекте для подключения светодиода к выводу CPLD мы ставим элемент буфера, можно ли таким образом на все ноги повесить светодиоды через резюки или есть как в контроллерах ограничение общее по току кристалла?
Честно сознаюсь, не осилил 361 страницу этого раздела и по этому извиняюсь за возможность повторения вопроса:
Решил заняться на конец ПЛИС, в частности взял себе поиграться XC9572XL, копался в датащитах, но так и не нашел информации о том, какой ток нагрузки выдерживает чип? В проекте для подключения светодиода к выводу CPLD мы ставим элемент буфера, можно ли таким образом на все ноги повесить светодиоды через резюки или есть как в контроллерах ограничение общее по току кристалла?


