Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Свои процессоры
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Страницы: 1, 2, 3, 4, 5, 6, 7
PVL
Занимаюсь разработкой своего проца под SoC. Если есть предложения по системе команд и практической реализации пишем сюда.
SM
Как классно поставлен вопрос smile.gif smile.gif Свои процы делаются для своих задач и исходя из каких-то своих требований. А не так вот - давайте, мол, все советуйте и систему команд, и реализацию. Хотя бы сказали, что это за процессор, какая архитектура в основе, и т.д.
PVL
Цитата(SM @ Mar 12 2009, 22:58) *
Как классно поставлен вопрос smile.gif smile.gif Свои процы делаются для своих задач и исходя из каких-то своих требований. А не так вот - давайте, мол, все советуйте и систему команд, и реализацию. Хотя бы сказали, что это за процессор, какая архитектура в основе, и т.д.

Сейчас видится МИСК архитектура. Арифметика целочисленная, под простую сигналку и ИО.
Methane
Цитата(PVL @ Mar 12 2009, 22:05) *
Сейчас видится МИСК архитектура. Арифметика целочисленная, под простую сигналку и ИО.

Что такое МИСК?
PVL
Цитата(Methane @ Mar 12 2009, 23:13) *
Что такое МИСК?

Почти тоже что РИСК только с бОльшим количеством рабочих регистров 256... 1024. Идеально для блочной памяти в ПЛИС.
Methane
Цитата(PVL @ Mar 12 2009, 22:16) *
Почти тоже что РИСК только с бОльшим количеством рабочих регистров 256... 1024. Идеально для блочной памяти в ПЛИС.

И тремя тактами на операцию?
PVL
Цитата(Methane @ Mar 12 2009, 23:20) *
И тремя тактами на операцию?

Не для сигналки можно и больше тактов, данные ведь независимые. Сейчас прикидываю конвейер на 8... 11 тактов. Затык с тем что разные инструкции имеют разное их число. Как райт бэк согласовывать.
Methane
Цитата(PVL @ Mar 12 2009, 22:23) *
Не для сигналки можно и больше тактов, данные ведь независимые. Сейчас прикидываю конвейер на 8... 11 тактов. Затык с тем что разные инструкции имеют разное их число. Как райт бэк согласовывать.

Как вы из регистрового файла, сразу несколько значений собираетесь вытаскивать за один такт?
PVL
Цитата(Methane @ Mar 12 2009, 23:37) *
Как вы из регистрового файла, сразу несколько значений собираетесь вытаскивать за один такт?

Не поверишь... cranky.gif в плисках память двухпортовая.
Methane
Цитата(PVL @ Mar 12 2009, 22:39) *
Не поверишь... cranky.gif в плисках память двухпортовая.

А я и не заметил. smile.gif
Пусть по две такта на команду. Или по одному но с аккумулятором. Ж)
PVL
Цитата(Methane @ Mar 12 2009, 23:49) *
А я и не заметил. smile.gif
Пусть по две такта на команду. Или по одному но с аккумулятором. Ж)

На спартане 3Е при частоте 300 МГц за один такт ничего кроме логического И или пересылки не выполняется. Сложение 4 такта, умножение от 8 - ми. Деление пока совсем не фурычит. Плиске пришлось радиатор довесить - греется. Система команд пока не для записи во внешнюю память - аж 57 бит на инструкцию.
Methane
Цитата(PVL @ Mar 12 2009, 22:53) *
На спартане 3Е при частоте 300 МГц за один такт ничего кроме логического И или пересылки не выполняется. Сложение 4 такта, умножение от 8 - ми. Деление пока совсем не фурычит. Плиске пришлось радиатор довесить - греется. Система команд пока не для записи во внешнюю память - аж 57 бит на инструкцию.

Жуть Сартан, на 300, (это же типа циклона, только более убогого?) Я помню что циклона, первая, "в лоб" умножает 16х16 в 32 за 16 наносекунд умножает. Жуть.
des00
Цитата(PVL @ Mar 12 2009, 13:51) *
Занимаюсь разработкой своего проца под SoC. Если есть предложения по системе команд и практической реализации пишем сюда.


пройтись по этому форуму, только на моей памяти подобных пионерских тем около 5-6. В том числе я собирался заняться парой тем, но времени нет.

затем пройтись по опенкоресам, там много реализаций.


ЗЫ. на будующее учитесь писать компиляторы, отладчики и прочее
SM
Цитата(des00 @ Mar 13 2009, 06:47) *
ЗЫ. на будующее учитесь писать компиляторы, отладчики и прочее

Угу, поддерживаю... У меня только порт бинутилсов занял полмесяца. А вот про С - даже думать боюсь.
Ynicky
А у меня уже есть свой процессор. LCC осилил, а вот с ассемблером напряг.
По образованию я не программист, но приходится писать программы для отладки
железа. Нашел вот такой проект:
http://sun.hasenbraten.de/vasm/index.php?view=source
Но из исходников собрать .exe не могу. Может кто поможет.
Поставил "Visual Studio 2008". Но с ней тоже надо разбираться.
У меня "Windows XP SP3".

Николай.
SM
Цитата(Ynicky @ Mar 13 2009, 13:23) *
А у меня уже есть свой процессор. LCC осилил, а вот с ассемблером напряг.
По образованию я не программист, но приходится писать программы для отладки
железа.

Мой совет, как уже прошедшего этот этап - берите binutils, и делайте на основе какого-то уже существующего там. Неделя на то, чтобы въехать, ну и неделя на то, чтобы свой сделать. Там, в бинутилс, "все для людей", т.е. добавить свою систему команд достаточно просто, при том, что сразу будут работать все фичи и объектного кода, и линковки.

Что интересно - я давал объявление на эту работу (за деньги), ни одного желающего не нашлось! Не то, что бы условия не устроили, а они были вполне щедрыми, а именно не было даже желающих!
Sefo
Цитата(PVL @ Mar 12 2009, 23:53) *
Система команд пока не для записи во внешнюю память - аж 57 бит на инструкцию.


Какой формат инструкции?
SM
Цитата(PVL @ Mar 12 2009, 23:53) *
Система команд пока не для записи во внешнюю память - аж 57 бит на инструкцию.

Ну почему же - расширить до 64 бит, и при шине внешней памяти шириной 128 и больше бит очень даже смотреться будет, выборка по паре или более инструкций за такт. Хотя лично я предпочитаю variable length, правда ведущую за собой серьезные усложнения декодера и схемы буфера предвыборки. (я так понял, что речь все таки в данном случае идет о суперпроизводительной числомолотилке, а не о CPU общего назначения, перекошенного под что-то конкретное)
PVL
Цитата(SM @ Mar 13 2009, 21:41) *
Ну почему же - расширить до 64 бит, и при шине внешней памяти шириной 128 и больше бит очень даже смотреться будет, выборка по паре или более инструкций за такт. Хотя лично я предпочитаю variable length, правда ведущую за собой серьезные усложнения декодера и схемы буфера предвыборки. (я так понял, что речь все таки в данном случае идет о суперпроизводительной числомолотилке, а не о CPU общего назначения, перекошенного под что-то конкретное)

57 бит нужно ядру ,чтобы выполнить инструкцию. Типа откуда взять, как переключить мультиплексор разультата, как положить. С положить напряг - умноженеи и деление результат 64 бита, умножение 9 тактов, сложение 4, деление 12 кароче баги с конвейером.


Цитата(SM @ Mar 13 2009, 21:41) *
Ну почему же - расширить до 64 бит, и при шине внешней памяти шириной 128 и больше бит очень даже смотреться будет, выборка по паре или более инструкций за такт. Хотя лично я предпочитаю variable length, правда ведущую за собой серьезные усложнения декодера и схемы буфера предвыборки. (я так понял, что речь все таки в данном случае идет о суперпроизводительной числомолотилке, а не о CPU общего назначения, перекошенного под что-то конкретное)

Во первых систему команд, хочется уложить в 16 бит дабы не юзать БГА корпус. Народный проц хочу сделать.
Во вторых уже не просто числомолотилка поскольку есть спец узлы под фурье и вейвлет, на числомолотилке раз в 10 медленнее будет.
Шина 96 бит - читать шесть инструкций за такт дабы работать на СРАМ. С динамикой пока лениво связываться.
И вообще сейчас есть спартан 3Е - 500к. На нем не далеко уити от числомолотилки..
SM
Цитата(PVL @ Mar 19 2009, 19:03) *
Во вторых уже не просто числомолотилка поскольку есть спец узлы под фурье и вейвлет
Так это и говорит о том, что проц - числомолотилка. Иначе бы без таких узлов был бы просто проц общего назначения.
Harbour
Цитата(SM @ Mar 13 2009, 12:55) *
Что интересно - я давал объявление на эту работу (за деньги), ни одного желающего не нашлось! Не то, что бы условия не устроили, а они были вполне щедрыми, а именно не было даже желающих!


Не надо ля-ля, помню обьяву, просто был дико занят в тот момент wink.gif
PVL
Что такое binutils? Готовая среда для разработки С - компайлера? Где взять? Подскажите , а то сейчас с программерами сношаюсь - достали cranky.gif
Ynicky
Цитата(PVL @ Mar 24 2009, 17:54) *
Что такое binutils? Готовая среда для разработки С - компайлера? Где взять? Подскажите , а то сейчас с программерами сношаюсь - достали cranky.gif


http://ftp.gnu.org/gnu/binutils/binutils-2.19.1.tar.gz
SM
Цитата(PVL @ Mar 24 2009, 17:54) *
Что такое binutils? Готовая среда для разработки С - компайлера?

нет, готовая среда для разработки С компайлера это gcc smile.gif А binutils это binutils - ассемблер, линкер, objdump, и прочее вокруг
Maverick
Цитата(PVL @ Mar 19 2009, 20:03) *
57 бит нужно ядру ,чтобы выполнить инструкцию. Типа откуда взять, как переключить мультиплексор разультата, как положить. С положить напряг - умноженеи и деление результат 64 бита, умножение 9 тактов, сложение 4, деление 12 кароче баги с конвейером.


А можно узнать как Вы делаете целочисленное деление за 12 тактов, наверное при разрядности данных 32 или 16.
Поделитесь пожалуйста алгоритмом, а лучше описанием на VHDL (идеальный вариант rolleyes.gif )/Verilog (если конечно это возможно)

Цитата(SM @ Mar 24 2009, 23:13) *
нет, готовая среда для разработки С компайлера это gcc smile.gif А binutils это binutils - ассемблер, линкер, objdump, и прочее вокруг


а не подскажите где можно взять готовую среду - gcc?
SM
Цитата(Maverick @ Mar 25 2009, 09:29) *
А можно узнать как Вы делаете целочисленное деление за 12 тактов, наверное при разрядности данных 32 или 16.
Поделитесь пожалуйста алгоритмом, а лучше описанием на VHDL (идеальный вариант rolleyes.gif )/Verilog (если конечно это возможно)

А в чем вопрос-то? Например деление за два такта делается при помощи комбинаторного "полуделителя", который при N-битном входе дает N/2-битное частное и N-битный остаток. Деление за 3 такта - "третьделителя" - соотв N/3 и N. Ну и так далее.
вот пример полнофункционального делителя, который делит 8/8 бит за 1 такт, а 16/16 бит за два такта, с поддержкой дробного деления и чисел со знаком.
Код
module div(num, den, quot, rem, m16, divz, sn, sd, frct, n_in, n_out, cycle, clock);

input  [15:0] num; // numerator
input [15:0] den; // denominator
output [15:0] quot; // quotient
output [15:0] rem; // remainder
output divz, n_out; // divide-by-zero & sign bits
input m16, sn, sd, frct, n_in, cycle, clock; // 8/16_mode, numerator_signed, denominator_signed, fractional/normal, sign_from_PSW, cpu_cycle_#, clock

wire [15:0] int_den, int_num, int_quot, ext_num, ext_den, int_rem;

wire nsgn, dsgn, qsgn;
assign nsgn = sn & (m16 ? num[15] : num[7]);
assign dsgn = sd & (m16 ? den[15] : den[7]);
assign qsgn = nsgn ^ dsgn;

assign ext_num = m16 ? num : { {8{nsgn}}, num[7:0]};
assign ext_den = m16 ? den : { {8{dsgn}}, den[7:0]};

assign int_num = (ext_num ^ {16{nsgn}}) + nsgn;
assign int_den = (ext_den ^ {16{dsgn}}) + dsgn;

assign divz = !(|int_den);

wire en_frct = frct & (int_num < int_den); // fractional mode only if |num| < |den|
wire numz = !(|int_num);

reg [3:0] i;
reg [16:0] temp;
reg [15:0] save_rem;
reg [17:0] temp1;
reg [7:0] out, save_out;

always @*
begin
  temp = cycle ? {save_rem, int_num[7] & !(en_frct)} :
           (en_frct ? {int_num, 1'b0} : {16'h0000,int_num[m16?15:7]});
  for (i=0; i<8; i = i+1'b1)
    begin
      temp1 = temp - int_den;
      out[7-i] = !temp1[17];
      if (i != 7) temp = {(temp1[17] ? temp[15:0] : temp1[15:0]), int_num[(cycle | !m16) ? (6-i) : (14-i)] & !(en_frct)};
        else temp = {1'b0, (temp1[17] ? temp[15:0] : temp1[15:0])};
    end
end
  
always @(posedge clock)
  if (!cycle) save_rem <= temp[15:0];

always @(posedge clock)
  if (!cycle) save_out <= out;

assign int_quot = {save_out, out};
assign int_rem = temp[15:0];

// sign of remaider :
// sign of remainder is equal to sign of numerator.
assign rem = (int_rem ^ {16{nsgn}}) + nsgn;  

// sign of quotient :
// fractional mode - quotient always positive
// integer mode - quotient has sign of den*num
wire t_qsgn = qsgn & !frct;
assign quot = (int_quot ^ {16{t_qsgn}}) + t_qsgn;

// sign output:
// fractional mode - if numerator not zero, put sign into N
// integer mode - put sign into N
assign n_out = (!numz | !frct) ? qsgn : n_in;

endmodule


Цитата(Maverick @ Mar 25 2009, 09:29) *
а не подскажите где можно взять готовую среду - gcc?

ну как бы gcc.gnu.org
Maverick
Цитата(SM @ Mar 25 2009, 12:33) *


Спасибо за исчерпающий ответ smile.gif
yes
Цитата(PVL @ Mar 12 2009, 23:16) *
Почти тоже что РИСК только с бОльшим количеством рабочих регистров 256... 1024. Идеально для блочной памяти в ПЛИС.


я всегда думал, что MISC это minimal instruction ...
то есть по русски - безоперандный (или стековый) комп
http://en.wikipedia.org/wiki/Minimal_instr...on_set_computer
(кстати там по ссылке есть и OISC one ... - имхо, cool)

примеры таких - всякие лисп/форт/жава компутеры
для ПЛИС есть ZPU (имхо, интересно, но мне не увы нужно)
http://www.zylin.com/zpu.htm
PVL
Цитата(yes @ Mar 25 2009, 22:01) *
я всегда думал, что MISC это minimal instruction ...
то есть по русски - безоперандный (или стековый) комп
http://en.wikipedia.org/wiki/Minimal_instr...on_set_computer
(кстати там по ссылке есть и OISC one ... - имхо, cool)

примеры таких - всякие лисп/форт/жава компутеры
для ПЛИС есть ZPU (имхо, интересно, но мне не увы нужно)
http://www.zylin.com/zpu.htm

Это ЛАЖА ,а не процессор. 300 ЛУТ таблиц 95 МГц. ААААхренеть производительность. У меня без нагрева шарашит на 240 МГц комерческий Спартан 3е работает. Индустриальные добегают до 300... 350 или 200 МГц на -40 градусов цельсия. Правда ПЛИС на 500 к ушла вся.
yes
Цитата(PVL @ Mar 29 2009, 19:34) *
Это ЛАЖА ,а не процессор. 300 ЛУТ таблиц 95 МГц. ААААхренеть производительность. У меня без нагрева шарашит на 240 МГц комерческий Спартан 3е работает. Индустриальные добегают до 300... 350 или 200 МГц на -40 градусов цельсия. Правда ПЛИС на 500 к ушла вся.


а что С++ и eCos у Вас работают?

имхо, не надо путать теплое с мягким - написать стэйтмашинку которая работает на спартане это одно (у меня в прошлом проекте автоматом вышло ~200МГц без каких-либо усилий с моей стороны), а написать процессор, который можно применять для процессорных задач (то есть компилятор, ОСь и т.п.) это совершенно другой уровень задачи
Ynicky
Чтобы не плодить новую тему, напишу сдесь. Если, конечно, автор темы не против.
Недавно прикрепили ко мне студента, а так как в связи с кризисом и мне то делать
особо нечего, то чего уж говорить про бедного студента. Поэтому решил ему дать
интересную тему (с моей точки зрения) для обучения разработке soc проектов
со встроенным процессорным ядром (чем собственно я и занимаюсь).
За основу взяли студенческое risc ядро, описанное в книге Сергиенко А.М.
“VHDL для проектирования вычислительных устройств”. Систему команд и архитектуру
немного доработали. Сделали простенький soc проект в Active-HDL81 для FPGA ф.Actel.
Его, собственно, и предлагаю для повторения всеми желающими. С некоторыми доработками
его можно реализовать и для других FPGA. Пока, для простоты,
пзу команд сделали в виде vhdl. Хотелось бы общими усилиями протестировать
процессорное ядро. Да и может кому пригодится. Оговорюсь сразу, проект сырой.
Поэтому будут исправления и доработки. Может у кого будут дельные предложения.
Готов рассмотреть. Краткое описание процессора можно найти в Директории "Doc".
Ассемблер - в директории "st16asm". Я его делал в "Microsoft Visual Studio 2008".
Еще не разобрался, как сделать, чтобы ".exe" файл запускался на других компьютерах,
где нет MSVC2008 (не программист). Компилятор сделаю попозже, после отработки
системы команд. Это будет LCC, так как есть уже опыт написания
"machine description" файлов под свою систему команд. Ну вот, собственно, пока все.
Будут вопросы, задавайте.

Николай.
Ynicky
Выкладываю новую версию проекта.
Просьба сообщить, работает ли ассемблер у кого нет "Microsoft Visual Studio".

Николай.
Leka
Команды Break и LU - что делают?

И зачем выделенный регистр SP (при отсутствии команд push/pop и аппаратном стеке возвратов)?
Ynicky
Цитата(Leka @ Jun 14 2009, 22:27) *
Команды Break и LU - что делают?

И зачем выделенный регистр SP (при отсутствии команд push/pop и аппаратном стеке возвратов)?


LU - Load Byte Unsigned. Беззнаковая загрузка байта.
Команда Break нужна только при отладке ПО с помощью внутрисхемного эмулятора, если память программ является оперативной. Вместо команды на которой ставится точка останова заносится Break. При дальнейшем пуске Break заменяется обратно на штатную команду. Если память программ - ПЗУ, то точки останова прописываются через JTAG в специальный регистр внутрисхемного эмулятора. С помощью аппаратного компаратора сравнивается текущий адрес команды и адрес точки останова. При совпадении происходит остановка процессора. Через JTAG процессор можно снова запустить, блокировав сигнал с компаратора на один период тактовой частоты процессора.

Регистр SP - это регистр общего назначения, используемый программой в качестве указателя на стек данных.

Николай.
Leka
Цитата(Ynicky @ Jun 14 2009, 18:30) *
Просьба сообщить, работает ли ассемблер у кого нет "Microsoft Visual Studio".

Работает.
des00
Цитата(Ynicky @ Jun 14 2009, 09:30) *
Выкладываю новую версию проекта.


для тех кто альдеком не пользуется, могли бы и vhd файл из risc_cpu.bde сгенерировать, делов то на минуту sad.gif

зачем "По сигналу RESET разряды всех регистров обнуляются." вот это сделали ? это сразу режет вам крылья, при использовании на хилой платформе + файл rfile.vhd -> R_RF4:process(CLK,RST,data_w,rfsel) вот вас прибило каждый регистр ручками описывать %)))


в файле tst_alu.asm есть такой код

Код
    imm    0xFF00
    lea    r5,0x0


но в доке Doc\to101st16.doc

команды lea нет.
Ynicky
Цитата(des00 @ Jun 15 2009, 06:59) *
для тех кто альдеком не пользуется, могли бы и vhd файл из risc_cpu.bde сгенерировать, делов то на минуту sad.gif

зачем "По сигналу RESET разряды всех регистров обнуляются." вот это сделали ? это сразу режет вам крылья, при использовании на хилой платформе + файл rfile.vhd -> R_RF4:process(CLK,RST,data_w,rfsel) вот вас прибило каждый регистр ручками описывать %)))

в файле tst_alu.asm есть такой код

Код
    imm    0xFF00
    lea    r5,0x0


но в доке Doc\to101st16.doc

команды lea нет.


1. Эти файлы генерятся автоматически при каждой компиляции и находятся в директории compile.

2. Виноват, соврал. При использовании в качестве регистрового файла внутренней памяти исходное значение берется из файлов инициализации (r8x256_M0.mem). rfile.vhd - как пример на регистрах.

3. lea - Load Effective Address. Это псевдокоманда для занесения в регистры констант.

lea r5,0xFF00 преобразуется ассемблером в

imm 0xFF00
addi r5,r0,0

Но можно писать и как в tst_alu.asm.

Если успею, вечером добавлю в описание.

Николай.
SFx
Цитата(des00 @ Jun 15 2009, 06:59) *
для тех кто альдеком не пользуется, могли бы и vhd файл из risc_cpu.bde сгенерировать, делов то на минуту sad.gif

смотрите файлы из архива, они как раз вам и нужны
Код
risc_st.rar\risc_st\risc_st_core\compile\risc_cpu.vhd
risc_st.rar\risc_st\risc_st_core\compile\risc_st_core.vhd
risc_st.rar\risc_st\risc_st_core\compile\risc_sync.vhd


З.Ы. пардон, страницу не обновил....
Ynicky
Исправили ошибки загрузки/выгрузки.

Николай.
Ynicky
Подкорректировали проект.
Проверили прерывания.
Дополнил описание.

В принципе проект "готов".
Осталось доделать внутрисхемный эмулятор для работы с отладчиком (программа на PC).

Николай.
Ynicky
Написали JTAG на vhdl, чтобы можно было проект зашить в другие FPGA (останется поменять ОЗУ).
Отмоделировали команды (stop, step, run) внутрисхемного эмулятора.
Подработал ассемблер.
Написал еще несколько тестовых программок.
Проверили в железе работу с семисегментным индикатором.

Николай.
Ynicky
Добавили 2 блока к внутрисхемному эмулятору.
Отмоделировали чтение памяти команд и данных в режиме отладки.

Остальное - после отпуска.

Николай.
Ynicky
Добавили блок чтения регистрового файла в режиме отладки.

Николай.
kuchynski
Пользуюсь своим процессором 5 год, за это время и отладил до безглючности. Работает на Xilinx.
Из плюсов:
язык форт, встроенные uart, фильтры с плавающей точкой, делители, разрядность до 32 бит с/без знака, переменное число поддерживаемых команд.
Из минусов:
средний текстовый редактор, недописанный отладчик, полностью отсутствует описание.
Aner
Цитата(kuchynski @ Oct 16 2009, 09:37) *
Пользуюсь своим процессором 5 год, за это время и отладил до безглючности. Работает на Xilinx.
Из плюсов:
язык форт, встроенные uart, фильтры с плавающей точкой, делители, разрядность до 32 бит с/без знака, переменное число поддерживаемых команд.
Из минусов:
средний текстовый редактор, недописанный отладчик, полностью отсутствует описание.

респект и уважение за такое.
Хотелось узнать следующее из плюсов/ минусов:
Тактовая, производительность в ~мипсах для математики, если подсчитывали.
Если сравнить с имеющимися ARM_ами то вот к какому ближе (по архитектуре) и есть ли преимущество и в чем?
По потреблению наверное проигрыш. Насколько хорош компилятор из форта получился?
Дебагер тоже наверное медленный, не реалтайм. С описанием понимаю вас, такое часто бывает. Поскольку требует много времени.
kuchynski
Цитата(Aner @ Oct 16 2009, 12:58) *
Тактовая, производительность в ~мипсах для математики, если подсчитывали.
Если сравнить с имеющимися ARM_ами то вот к какому ближе (по архитектуре) и есть ли преимущество и в чем?
По потреблению наверное проигрыш. Насколько хорош компилятор из форта получился?
Дебагер тоже наверное медленный, не реалтайм.

Несколько лет назад таких ARM не было, сейчас не знаю. Основное преимущество - переменная разрядность, требуеться 23 разряда - будет 23-х разрядный проц, знаковый бит не надо - убираем, лишнего в микросхеме никто не возмёт.
Все операции(кроме деления, фильтра) выполняются за один такт, работает на 48 Мгц на XC3S400-4PQ208C при 20 разрядах ядра, больше просто не подавал.
Форт хорош тем, что: 1. небольшой код программы(отсутствует поле адреса регистра); 2. при прерываниях не нужно сохранять ни одного регистра; 3. более высокий уровень письма, чем у ассемблера, поскольку компилятор самоделанный, писать можно в буквальном смысле на русском языке.
Дебагер - отстой, не пользуюсь.
Цитата(Aner @ Oct 16 2009, 12:58) *
С описанием понимаю вас, такое часто бывает. Поскольку требует много времени.

и не для кого его писать! Похвастался здесь и хорошо, платят совсем за другое.
OverDrewk
Цитата(Ynicky @ Mar 13 2009, 17:23) *
А у меня уже есть свой процессор. LCC осилил, а вот с ассемблером напряг.
По образованию я не программист, но приходится писать программы для отладки
железа. Нашел вот такой проект:
http://sun.hasenbraten.de/vasm/index.php?view=source
Но из исходников собрать .exe не могу. Может кто поможет.
Поставил "Visual Studio 2008". Но с ней тоже надо разбираться.
У меня "Windows XP SP3".

Николай.


Смотри инструкцию, под Windows может и не соберешь. Исходя из содержимого vasm.tar.gz по данному линку надо ставить Linux, ну или minGW(под Windows) и собирать проект. Инструкция http://sun.hasenbraten.de/vasm/index.php?view=compile
Ynicky
Цитата(OverDrewk @ Oct 23 2009, 08:57) *
Смотри инструкцию, под Windows может и не соберешь. Исходя из содержимого vasm.tar.gz по данному линку надо ставить Linux, ну или minGW(под Windows) и собирать проект. Инструкция http://sun.hasenbraten.de/vasm/index.php?view=compile


Пошел по пути наименьшего сопротивления. Переделал свой процессор на MIPS32,
т.к. изначально делал его под эту архитектуру.
Поставил SDE v6. И теперь не знаю проблем ни с С ни с ASM-ом.
Единственное разочарование - не своя система команд.

Николай.
Leka
Цитата(Ynicky @ Oct 23 2009, 20:07) *
Переделал свой процессор на MIPS32, т.к. изначально делал его под эту архитектуру.

Ну и каковы результаты синтеза?
Ynicky
Цитата(Leka @ Oct 23 2009, 21:32) *
Ну и каковы результаты синтеза?


Пока не доделал блок MDU (multiply divide unit), поэтому результат синтеза без него.

Николай.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.