Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Spartan 3E SK
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Страницы: 1, 2
at89c51ed2
2 des00
Спасибо за наводку, буду иметь ввиду a14.gif . Скорее всего, так оно и есть - мне досталась версия проца с перезаливкой памяти программ на лету. Накачал кучу документации по процу, сильно не разбирался, пока не актуально, но что то прояснилось - что можно пытаться реализовать и какие возможности у проца.
Георгий 2
Запарился уже с проклятым ЛСД до сих пор ничего не выходит. Пробовал переделать ассемблер и сосдать ВХДЛ файл на его основе естессно ни хрена не вышло, он какой-то дистрофийный и покоцаный выходит... Копец какой-то... Пробовал переделать на основе полученного ВХДЛ начальный файл, даже править его пытался (в разумных пределах) , в общем перерыл кучу доков но толком не могу понять как правильно писать файл аасемблера, либо как правильно мутить конвертацию в ВХДЛ файл (может тут где косячу?) так чтобы потом у меня букоффки повлялись на ЛСД...
Никто не посоветует за что взятся?
Георгий 2
Я тут еще поковырялся в папке ассемблер с прогой для конвертирования .psm в .vhd есть файлик ROM_form.vhd, как я понял это шаблон по которому создается требующийся нам файл .vhd, если мы берем исходник ассемблера из примера и самостоятельно пытаемся сделать свой counter.vhd то получаем фигу, так вот если его сравнить с counter.vhd из примера сразу ощущается разница.
Вот в общем либо лыжи не едут, либо я ... слишком умный. То есть либо там ошибочный шаблон, либо у меня руки растут не из плеч, либо плечи не в том месте... wacko.gif
at89c51ed2
2 Георгий 2
Что то давненько Вас, батенька, не было видно beer.gif ! Изучали проц smile3046.gif !? Постараюсь кратко. Что бы сделать из control.psm -> control.vhd надо следующее:
1. Наличие в рабочей директории файла KCPSM3.EXE - собственно транслятор ассемблера
2. Наличие в рабочей директории файла control.psm - собственно сам исходник программы на ассемблере
3. Наличие в рабочей директории файла ROM_form.coe - какой то заголовок для формирования файла памяти
4. Наличие в рабочей директории файла ROM_form.v
5. Наличие в рабочей директории файла ROM_form.vhd
Последние оба файла вроде бы описывают одно и то же - собственно память, но зачем их надо обоих мне не ясно.
А дальше банально просто - запускаете из командной строки: kcpsm3 control.psm
В результате работы получаете control.vhd
Дальше в ИСИ собираете:
s3esk_startup.vhd - топ-левел
s3esk_startup.ucf - констрейны для "кита" (там описаны все кнопочки, леды, индикатор, клоки и т.д.)
kcpsm3.vhd - собственно сам процессор
control.vhd - описание ПЗУ процессора, расположенного в БРАМ
Всё это у меня получилось, только не собралось. РАньше я об этом уже писал.
Далее. Что бы писать на ассемблере, не нужно ни чего, кроме текстового редактора, системы команд и понимания работы проца, на уровне структурной схемы, или архитектуры проца, ну и конечно понимания самого главного - что ВЫ хотите получить от программы, в результате её работы. Ну, по поводу редактора - это дело вкусов, я пользую бесплатный редактор Notepad++ v5.5.1. Есть аналогичный Programmer's Notepad. Первый мне более удобен. Много всяких "вкусностей", в том числе подсветка всяких синтаксисов (С, АSМ, V, VHDL и т.д.). В ИСИ я встроенным редактором не пользуюсь, правлю текст (а я уже докатился до написания своего проекта на V 08.gif ) в открытом параллельно редакторе. Всё что нужно для ассемблера есть в документе ug129.pdf и (можно ещё посмотреть, но первый документ полнее) KCPSM3_Manual.pdf. Если проц собирается в ИСИ, то можно забыть про ВХДЛ, ФПГА, а просто юзать проц. Но Вам доступно только 1к слов программы, один источник прерываний, стек с глубиной 16, те же 16 байтовых регистров общего назначения, простенькое АЛУ (+ и -), порт вход-выход и порт ID (я так понял для раширения постранства ввода - вывода). Не так уж и жирно, что бы решать какие то задачи, хотя, вывод на ЖКИ обеспечит (готовой текстовой строчки, как её сформировать, это уже другой вопрос). Позволю дать Вам один совет. Если босс очень сильно хочет в кратчайшие сроки увидеть на индикаторе нечто, отличающееся от XILINX Spartan3... , а у Вас полный пендос и непонимание происходящего.... Короче, найдите в файле control.vhd последовательность байт, описывающих текстовые строки сообщения. Они записаны в ASCII кодах, трудно будет их идентифицировать, потомоу как РОМ 18 разрядов, а коды 8 разрядные. Если получится, то можете вручную вписать туда новое сообщение. Может сможете сделать симуляцию и тогда явно увидите, откуда извлекаются эти коды. Конечно, изврат, но как вариант. Возможно это будет легче, но долго так жить нельзя! Потом надо будет получить результат. Так что изучение ВХДЛ для Вас остаётся актуальным вопросом. А что такое counter.vhd? Вы хотите из проца счётчик сделать что ли? Я много скачал возможных применений - тут и генараторы-формирователи, и работа с АЦП-ЦАП, частотомер, ШИМ, RTC, работа с памятью разной, UART и т.д. Там много примеров на ассемблере, возможно (я глубоко не копал) можно найти и исходники (всмысле сборка проца вместе с этим асс). Удачи.
Георгий 2
К сожалению лыжи были нормальные, просто я умным оказался, сегодня на свежую голову завел жто ЛСД проклятый, хз че вчера не вышло, все делал точно так же...
Осталось разобраться том какое количество символов можно запихать в ЛСД и сделать так чтобы это неведомое кол-во символов нормально отображалось как хочется мне...
Курю user guide smile3046.gif
at89c51ed2
2 Георгий 2
Цитата
Осталось разобраться том какое количество символов можно запихать в ЛСД и сделать так чтобы это неведомое кол-во символов нормально отображалось как хочется мне...
Курю user guide

Ну, это проще, ug230 Вам поможет. Ещё можете почитать описание на HD44780. Я думаю (могу и ошибаться), что это де-факто стандарт на строчные символьные индикаторы. Вся Ваша задача заключается в правильной инициализации контроллера и записи данных в DDRAM. Если своих символов не надо делать, то в CGRAM писать не надо 08.gif .
По поводу
Цитата
хз че вчера не вышло
у меня тоже косяк был на полдня: ИСИ писало что то типа "top-level file was not found". Помогло очищение файлов проекта и перезапуск ИСИ.
hdl_student
Не знаю, насколько это будет актуально, но вот пример работы с LCD без Picoblaze:
CODE
module top (clk, sf_ce0, lcd_rs, lcd_rw, lcd_e, lcd_4, lcd_5, lcd_6, lcd_7);
parameter k = 18;
(* LOC="C9" *) input clk; // synthesis attribute PERIOD clk "50 MHz"
reg [k+8-1:0] count=0;
(* LOC="D16" *) output reg sf_ce0; // high for full LCD access
reg lcd_busy=1;
reg lcd_stb;
reg [5:0] lcd_code;
reg [6:0] lcd_stuff;
(* LOC="L18" *) output reg lcd_rs;
(* LOC="L17" *) output reg lcd_rw;
(* LOC="M15" *) output reg lcd_7;
(* LOC="P17" *) output reg lcd_6;
(* LOC="R16" *) output reg lcd_5;
(* LOC="R15" *) output reg lcd_4;
(* LOC="M18" *) output reg lcd_e;

always @ (posedge clk) begin
count <= count + 1;
sf_ce0 <= 1;
case (count[k+7:k+2])
0: lcd_code <= 6'h03; // power-on initialization
1: lcd_code <= 6'h03;
2: lcd_code <= 6'h03;
3: lcd_code <= 6'h02;
4: lcd_code <= 6'h02; // function set
5: lcd_code <= 6'h08;
6: lcd_code <= 6'h00; // entry mode set
7: lcd_code <= 6'h06;
8: lcd_code <= 6'h00; // display on/off control
9: lcd_code <= 6'h0C;
10: lcd_code <= 6'h00; // display clear
11: lcd_code <= 6'h01;
12: lcd_code <= 6'h24; // H
13: lcd_code <= 6'h28;
14: lcd_code <= 6'h26; // e
15: lcd_code <= 6'h25;
16: lcd_code <= 6'h26; // l
17: lcd_code <= 6'h2C;
18: lcd_code <= 6'h26; // l
19: lcd_code <= 6'h2C;
20: lcd_code <= 6'h26; // o
21: lcd_code <= 6'h2F;
22: lcd_code <= 6'h22; //
23: lcd_code <= 6'h20;
24: lcd_code <= 6'h25; // W
25: lcd_code <= 6'h27;
26: lcd_code <= 6'h26; // o
27: lcd_code <= 6'h2F;
28: lcd_code <= 6'h27; // r
29: lcd_code <= 6'h22;
30: lcd_code <= 6'h26; // l
31: lcd_code <= 6'h2C;
32: lcd_code <= 6'h26; // d
33: lcd_code <= 6'h24;
34: lcd_code <= 6'h22; // !
35: lcd_code <= 6'h21;
default: lcd_code <= 6'h10;
endcase
//if (lcd_rw) // comment-out for repeating display
// lcd_busy <= 0; // comment-out for repeating display
lcd_stb <= ^count[k+1:k+0] & ~lcd_rw & lcd_busy; // clkrate / 2^(k+2)
lcd_stuff <= {lcd_stb,lcd_code};
{lcd_e,lcd_rs,lcd_rw,lcd_7,lcd_6,lcd_5,lcd_4} <= lcd_stuff;
end
endmodule

Прекрасно работатет на моём ките. Версию на VHDL можно посмотреть тут: http://www.edaboard.com/ftopic202710.html.
Георгий 2
Цитата(hdl_student @ Feb 28 2010, 00:43) *
Не знаю, насколько это будет актуально, но вот пример работы с LCD без Picoblaze:


Очень актуально, спасибо Вам большое. Это очень полезная вещь. Попробую у себя и отпишусь потом.
А подскажите какой у Вас кит? S3eSK? или нет? мне просто интересно хватит ли ресурсов например CPLD XC95144XL-10TQG100C
hdl_student
Всегда рад помочь.
Цитата
А подскажите какой у Вас кит? S3eSK? или нет? мне просто интересно хватит ли ресурсов например CPLD XC95144XL-10TQG100C

У меня HW-SPAR3E-SK-UNI-G, если не ошибаюсь, тотже, что и у вас. LCD (насколько я помню по ug230.pdf) подключен только к xc3s500e.
Георгий 2
Цитата(hdl_student @ Mar 1 2010, 14:05) *
Всегда рад помочь.

У меня HW-SPAR3E-SK-UNI-G, если не ошибаюсь, тотже, что и у вас. LCD (насколько я помню по ug230.pdf) подключен только к xc3s500e.


Все совершенно верно, кит такой-же. Verilig текст заработал, я правдо чисто на интуиции понял че кого там, так как ни бум-бум в этом языке.... Но VHDL код так и не попер... Пока не пойму в чем дело...
А по поводу подключения к CPLD, я имел ввиду другой камень. Мне в голову мысль пришла отладочник сваять своими силами, на CPLD 144, я знаю что picoblaze там не попрет, а вот хватит ли ее ресурсов на данный код мне не понятно, просто за время моего изучения ПЛИС у меня был S3eSK и Flex10k10 (от Альтеры) так на флекс эта хрень точно не влезет, а про CPLD я не знаю....
at89c51ed2
2 hdl_student
Скачал Ваш пример, спасибо. Сам пытаюсь пописывать на V, будет интересно в образовательных целях.
2 Георгий 2
Цитата
А по поводу подключения к CPLD, я имел ввиду другой камень. Мне в голову мысль пришла отладочник сваять своими силами, на CPLD 144, я знаю что picoblaze там не попрет, а вот хватит ли ее ресурсов на данный код мне не понятно, просто за время моего изучения ПЛИС у меня был S3eSK и Flex10k10 (от Альтеры) так на флекс эта хрень точно не влезет, а про CPLD я не знаю....

У Вас, что, отняли "кит" что ли? Не понятно, что Вы собираетесь изобрести на CPLD144, какой такой отладочник и зачем Вам для этого picoblaze laughing.gif ? По поводу ресурсов. Тут по моему всё просто. У Вас же есть рабочее описание, и Вы говорите, что оно у Вас работает. Так загляните в рапорт файл, там всё написано! Архитектуры конечно разные (CPLD <-> FPGA), но (ИМХО) индикатор этот должен влезть в CPLD, потому как в её архитектуре есть комбинационные блоки, предназначенные как раз для большого количества переменных в термах, что позволяет оптимальнее, чем ФПГА, решать задачи комбинационных автоматов. Структура же LUT в FPGA более подходит для арифметических задач и устройств реализуемых при помощи каскадируемых блоков. Если не прав, извините, пусть люди знающие меня поправят. Может Вам MAX II подойдёт? А что Вам так 10к10 не понравилась? Мне кажется, что для этого индикатора её хватит более чем. Есть ещё одна возможность - я открыл для себя RTL View-er 08.gif . Так посмотрите в нём, что там "внутри" на уровне gate - ов у этого описания. Увидите схему, может сможете прикинуть. Во всяком случае количество триггеров точно можно посчитать.
Георгий 2
Цитата(at89c51ed2 @ Mar 2 2010, 05:16) *
2 Георгий 2

У Вас, что, отняли "кит" что ли? Не понятно, что Вы собираетесь изобрести на CPLD144, какой такой отладочник и зачем Вам для этого picoblaze laughing.gif ? По поводу ресурсов. Тут по моему всё просто. У Вас же есть рабочее описание, и Вы говорите, что оно у Вас работает. Так загляните в рапорт файл, там всё написано!


Нет кит не отняли просто есть задумка, а именно сделать собственный кит на базе этой CPLD. Но это пока надо сделать и надо подумать что стоит туда навесить. По поводу описания работает Verilog, а VHDL нет, с учетом того что я практикуюсь в VHDL этот вариант мне не подходит.

Цитата(at89c51ed2 @ Mar 2 2010, 05:16) *
Может Вам MAX II подойдёт? А что Вам так 10к10 не понравилась? Мне кажется, что для этого индикатора её хватит более чем. Есть ещё одна возможность - я открыл для себя RTL View-er 08.gif . Так посмотрите в нём, что там "внутри" на уровне gate - ов у этого описания. Увидите схему, может сможете прикинуть. Во всяком случае количество триггеров точно можно посчитать.

Ну с 10к10 я именно в максе и работал. Есть у меня сомнение что хватит ее для этого индикатора, с рудом на динамическую индикацию 6 семисегментных индикаторов хватило... Да и там сделан собственными усилиями нашего политеха учебный стенд, правдо зачем сделан непонятно, и что-то туда присобачить будет проблематично....
По поводу того как прикинуть по схеме, хватит ли места, мой навык еще далек от этого, но попробую, спасибо за совет...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.