Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: I8x86 ip core(+)
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
cdg
Где взять сабж? Вроде у Ментора когдато была такая мегакорка, перерыл их сайт не могу найти, 51-ое ядро есть а 8086 нет, подскажите где взять подобное? Интересует возможная стоимость. Если кто делал поделитесь опытом.
psL
здесь http://www.ht-lab.com/freecores/cpu8086/cpu86.html

еще в инвентровских ир на местном фтп
cdg
Цитата(psL @ Sep 14 2006, 10:24) *
здесь http://www.ht-lab.com/freecores/cpu8086/cpu86.html
еще в инвентровских ир на местном фтп

Это есть, вопрос как раз в инвенторовской корке она у них с сайта пропала sad.gif, да и к томуже в режиме 8086 глючит sad.gif sad.gif sad.gif, freecores пока не занимался
psL
Цитата(cdg @ Sep 19 2006, 09:28) *
Цитата(psL @ Sep 14 2006, 10:24) *

здесь http://www.ht-lab.com/freecores/cpu8086/cpu86.html
еще в инвентровских ир на местном фтп

Это есть, вопрос как раз в инвенторовской корке она у них с сайта пропала sad.gif, да и к томуже в режиме 8086 глючит sad.gif sad.gif sad.gif, freecores пока не занимался

А в чем глюк?
cdg
Цитата(psL @ Sep 19 2006, 09:34) *
Цитата(cdg @ Sep 19 2006, 09:28) *

Цитата(psL @ Sep 14 2006, 10:24) *

здесь http://www.ht-lab.com/freecores/cpu8086/cpu86.html
еще в инвентровских ир на местном фтп

Это есть, вопрос как раз в инвенторовской корке она у них с сайта пропала sad.gif, да и к томуже в режиме 8086 глючит sad.gif sad.gif sad.gif, freecores пока не занимался

А в чем глюк?

Фактически как я понял у них какие то проблемы с очередью команд, простейшая программа, укладывающаяся в первые 16 байт, и, осуществляющая чтение ячейкм памяти, инкремент и запись в нее же, работает, но появляются какие то странные дополнительные чтения/записи из памяти и в память по неиспользуемым адресам, после этих "чудесных" записей, программа начинает работат заново и больше не сбивается sad.gif.
cdg
По результатам несколько-дневных долбаний:
инвентровское ядро так и не заработало (ни Verilog ни VHDL) sad.gif
ядро HTlabcom по первым впечатлениям работает (первый простейший код), но надо еще многое проверять.
vetal
проверьте папочку с корками в upload, может поможет.
cdg
Цитата(vetal @ Sep 22 2006, 17:08) *
проверьте папочку с корками в upload, может поможет.

А можете на почту выслать? Потому как из папочки ошибка идет, файл не может быть загружен sad.gif
mail to: cdg_y@yandex.ru Или переложите куда нибудь. Заранее спасибо.

Все получилось, спасибо, прочитал как лечить проблему smile.gif smile.gif smile.gif
vetal
PM.
С ftp файл скачивается(у меня).
cdg
Цитата(vetal @ Sep 22 2006, 18:17) *
PM.
С ftp файл скачивается(у меня).

Скачать получилось, боьшое спасибо, прочитал как лечить проблему (надо было перерегистрироваться) smile.gif smile.gif smile.gif
cdg
->To Vetal<- Не помогло sad.gif
Gate
cdg,
а Вам не кажется, что проблема где-то у Вас? Менторовская корка у Вас не работает, выложеная Vetal'ом не работает тоже. Я сомневаюсь, что 2 фирмы продают фактически нерабочие ядра.
cdg
Цитата(Gate @ Sep 28 2006, 14:34) *
cdg,
а Вам не кажется, что проблема где-то у Вас? Менторовская корка у Вас не работает, выложеная Vetal'ом не работает тоже. Я сомневаюсь, что 2 фирмы продают фактически нерабочие ядра.

Мне не кажется и на то есть следующие причины:
1) Менторовская корка была продана АРС и развивалась им далее (не нужно быть супер умным, чтобы это увидить даже не сравнивая исходные тексты корки, достаточно посмотреть на даташиты).
2) Первоначальный глюк связанный с работой в стартапной области небыл исправлен.
3) Существует ряд моментов, на которые у меня не хватает фантазии получить ответы.
4) По фактам:
а) В комплекте с ядром идет testbench, который "?работает?" (их код). Если взять простую програмку:
Код
@FFF8 F0BB 8E15 33DB 8BDB 40C3 0789 9090 F9EB

Код
.186
TITLE   (8086-IP Programm)
LOCALS
code_seg segment
         assume  cs:code_seg
        org     100h
begin:
        mov     bx, 015F0h
        mov     ds, bx
        xor     bx, bx
        mov     ax, bx
l1:
        inc     ax
        mov     word ptr [bx], ax
        mov     ax, word ptr [bx]
        jmp     l1
code_seg ends
        END begin

она как раз помещается в bootcode.mem, то она работает на этом ядре несколько странно (в отличие от фриварного ядра и собственно от обычного процессора I8х86). В первый проход AX и ячейка @15F0h наращивается на 1, второй проход опять в AX и ячейку @15F0h попадает 1, потом АХ обнуляется, на третий проход пишется 1-ца, 4-ый 2-ка и т.д., т.е. начинает работать нормально.
Если код переместить в памяти, а в bootcode.mem оставить только переход то все работает нормально. Так точно у меня работало и инвентровское ядро (отсуда и мысли что глюк не был выправлен).
б) Не могу найти объяснения исходному содержимому файла bootcode.mem:
Код
@fff8 00EA 5000 FF11 FFFF EFEA BFEF FFBF FFFF

если это дизасемблировать то получается нечто:
Код
00000000: EA00005011 jmp 1150:0000
00000005: FF db FF; " "
00000006: FF db FF; " "
00000007: FFEA jmp edx
00000009: EF out ax,dx
0000000A: EF out ax,dx
0000000B: BABFFF mov dx,FFBF
0000000E: FF db FF; " "
0000000F: FF db FF; " "

Код после JMP смысла не имеет (собственно и не выполняется). К стати буткод от инвентровског не отличается.
в) По поводу подключения тоже множество непонятных моментов, разное поведение процессора в зависимости от того в каком состоянии входная шина данных при обращении к "закрытым(несуществующим) областям памяти", 16'h0000- одно, 16'hFFFF - другое, 16'hz - вобще виснет.
г) сохранился с менторовских времен и небольшой баг в тесбенче:
Код
есть:
// Build status for display
  wire s = {mio, dtr_n, den_n};
надо:
// Build status for display
  wire [2:0] s = {mio, dtr_n, den_n};

Исходя из изложенного и возникает сомнение в работоспособности ядра выкидыващего такие фортели на самых простых вещах.

5) Вопрос о полнофункциональной программе тестировании ядра остается пока для меня открытым.
6) Если у Вас есть ответы на сформулированные вопросы или Вы можете подсказать в чем корень моих бед - милости прошу smile.gif.

З.Ы. Пока только в Active HDL пытаюсь запустить, но макет на столе уже есть.
cdg
А вот, к стати, зачем это все надо:
http://electronix.ru/forum/index.php?showtopic=21674
Gate
Цитата(cdg @ Sep 29 2006, 09:39) *
она как раз помещается в bootcode.mem, то она работает на этом ядре несколько странно (в отличие от фриварного ядра и собственно от обычного процессора I8х86). В первый проход AX и ячейка @15F0h наращивается на 1, второй проход опять в AX и ячейку @15F0h попадает 1, потом АХ обнуляется, на третий проход пишется 1-ца, 4-ый 2-ка и т.д., т.е. начинает работать нормально.

cdg, Вы совершенно правы, я запустил Ваш код на квесте - те же грабли. Там еще в SP пишется 2, похоже, что вместо AX.
Вопрос - этот глюк критичный, или он возникает только после сброса? Как я понял, он исчезает, если первой командой стоит long jmp.
Вопрос с полной верификацией этого IP, думаю, останется открытым - пока Вы его не купили, тогда можно обратится к разработчикам и получить сатисфакцию. Единственный путь, который я вижу - имплементировать ядро и писать под него firmware, нужное для данной конкретной задачи - в процессе отладки станет ясно глюкавость. Тестов не верификацию интеловских процов я никогда не видел, тесты в биосах, под дос типа манифеста - это все не то.
ЗЫ Хекс, который Вы привели, не совпадает с листингом: в хексе два нопа, а в листинге mov ax,[bx]
klop
Боюсь что написание тестов комманд для x86 процов задача молореализуемая. CISC однако. Проще собрать систему с таймером и UART и попробовать запустить на ней простенькую операционку. А вообще отладка чужого CISC(сырого) дело тухлое. Ведь каждая найденная ошибка будет предпоследней.
cdg
Цитата
ЗЫ Хекс, который Вы привели, не совпадает с листингом: в хексе два нопа, а в листинге mov ax,[bx]

Тут я действительно промазал, просто скопировал одну из многочисленных вариаций программки, но суть от этого не меняется. Верификацию переложу на программистов, пусть они теперь голову поломают smile.gif. Спасибо за участие.
cdg
Цитата
Боюсь что написание тестов комманд для x86 процов задача молореализуемая. CISC однако. Проще собрать систему с таймером и UART и попробовать запустить на ней простенькую операционку. А вообще отладка чужого CISC(сырого) дело тухлое. Ведь каждая найденная ошибка будет предпоследней.

Очень жаль, но Вы обсолютно правы sad.gif.
cdg
В общем по результатам исследований ARC ядро (как и инвентровское) считаю нерабочим.
Пормимо указанного ранее глюка со стартапом глючит обработка прерываний, т.е. от момента выставления прерывания до получения вектора прерывания все ок, от момента получения вектора прерывания до получения значений смещения и сегмента происходят 3 "левых" записи в память по "левым" адресам, после возвращения из процедуры прерываний, состоящей из одной команды iret (0xCF), портятся значения регистров АХ, SI и т.п.
Сложилось впечатление что оное ядро специально "подпорчено", но годится в демо целях sad.gif.
Жаль потраченного времени, но отрицательный результат тоже результат smile.gif .
maior
Цитата(cdg @ Oct 2 2006, 16:20) *
В общем по результатам исследований ARC ядро (как и инвентровское) считаю нерабочим.

А ht-лабовскую будете пробовать?
Может где-нибудь в инете есть отчеты или форумы по x86 коркам?
cdg
Цитата
А ht-лабовскую будете пробовать?

Я ее уже смотрел (см. выше), предварительно работает на том, где спотыкается Inventra(Mentor) и ARC. Сегодня займусь дальнейшими изысканиями, о результатах сообщу(коли есть интерес, а то пока я один здесь такой заинтресованный) smile.gif. Предварительно могу сказать, что эта корка работает медленнее(но работает smile.gif), чем Inventra(Mentor) и ARC - 33МГц против 47МГц. Напрягает отсутствие входа готовности SRDY и невозможность выставить вайтстэйты отдельно на область IO и MEM, однако может можно доработать.
Цитата
Может где-нибудь в инете есть отчеты или форумы по x86 коркам?

Я на такие пока не нарвался.
maior
Цитата(cdg @ Oct 3 2006, 09:12) *
...о результатах сообщу(коли есть интерес, а то пока я один здесь такой заинтресованный) ...

Интерес есть и у меня: количество наработанного программного обеспечения (на оригинальном i80C188/186EB) - огромно! Интересно
просто все это использовать для SOC систем. Все минусы x86
внутри FPGA могут быть скомпенсированы наличием готового софта,
легкости написaния и отладки нового. Но нужна достаточно надежная
и совместимая корка.
cdg
Цитата
Интерес есть и у меня

И это радует!!! smile.gif
Цитата
количество наработанного программного обеспечения (на оригинальном i80C188/186EB) - огромно!

Аналогично...
Цитата
Все минусы x86 внутри FPGA могут быть скомпенсированы наличием готового софта,
легкости написaния и отладки нового.

Это спорное утверждение...
Цитата
Но нужна достаточно надежная
и совместимая корка.

Я вот и пытаюсь найти. Пока в корке HTlabcom нашел глюк с прерываниями, залез к ним на страничку увидел новый релиз в котором обещали исправить. Вот как бы их еще уговорить сделать входной SRDY сигнал???
klop
Ради прикола. А кто нибудь видел чипы в которых бы были синтезируемые x86 ядра? Я что то таких не встречал. Впрочем это не значит что их нет.
maior
Цитата(cdg @ Oct 4 2006, 16:40) *
Цитата

Все минусы x86 внутри FPGA могут быть скомпенсированы наличием готового софта,
легкости написaния и отладки нового.

Это спорное утверждение...

Может иногда и спорное, но часто очень даже и не спорное. Часто нужно сделать красивое для юзера и гибкое для девелопера, пусть даже и не самое производительное, решение задачи - в срок, чем идеальное и суперсовременное - тогда, когда оно уже не нужно.
cdg
Всем нужно вчера smile.gif
Gate
Цитата(klop @ Oct 4 2006, 16:58) *
Ради прикола. А кто нибудь видел чипы в которых бы были синтезируемые x86 ядра? Я что то таких не встречал. Впрочем это не значит что их нет.

Кто-то на форуме ixbt по фотоаппаратам говорил, что в процессоре digic II, который обрабатывает снимки в каноновской серии ixus, есть dsp + ядро 86.
maior
Цитата(Gate @ Oct 4 2006, 20:10) *
Цитата(klop @ Oct 4 2006, 16:58) *

Ради прикола. А кто нибудь видел чипы в которых бы были синтезируемые x86 ядра? Я что то таких не встречал. Впрочем это не значит что их нет.

Кто-то на форуме ixbt по фотоаппаратам говорил, что в процессоре digic II, который обрабатывает снимки в каноновской серии ixus, есть dsp + ядро 86.

Да, там хакеры раскопали код firmware - оказался от i186. Забавно. Жив курилка!
http://forum.ixbt.com/topic.cgi?id=20:11661
http://forum.ixbt.com/topic.cgi?id=8:18741-115
Кому интересно.
Gate
cdg,
я исправил(?) ошибку в менторовской корке, теперь маленькая программа на 16 байт работает правильно, регистры не портятся. Работает также и огромный тестбенч, который там приложен.
Цитата(cdg @ Oct 2 2006, 16:20) *
В общем по результатам исследований ARC ядро (как и инвентровское) считаю нерабочим.
Пормимо указанного ранее глюка со стартапом глючит обработка прерываний, т.е. от момента выставления прерывания до получения вектора прерывания все ок, от момента получения вектора прерывания до получения значений смещения и сегмента происходят 3 "левых" записи в память по "левым" адресам, после возвращения из процедуры прерываний, состоящей из одной команды iret (0xCF), портятся значения регистров АХ, SI и т.п.

Проверьте, пожалуйста, обработку прерываний, и если они будут глючить, пришлите мне исходники Вашего теста, я поисправляю дальше...
Gate
Нашел в менторовском тестбенче кусочек, где обрабатывается прерывание и посмотрел.
Цитата(cdg @ Oct 2 2006, 16:20) *
глючит обработка прерываний, т.е. от момента выставления прерывания до получения вектора прерывания все ок, от момента получения вектора прерывания до получения значений смещения и сегмента происходят 3 "левых" записи в память по "левым" адресам,

У меня не так - после получения вектора идет 3 раза запись в стек (CS, IP и флагов), потом 2 чтения сегмента и смещ. процедуры обработки прерыв. Потом 3 чтения - загрузка очереди инструкций с нового адреса. Все честно.
Цитата
после возвращения из процедуры прерываний, состоящей из одной команды iret (0xCF), портятся значения регистров АХ, SI и т.п.

У меня все стоит smile.gif 3 чтения на возврат из прерывания и 3 чтения очереди инструкций. Меняются только SP и BP - но BP из-за pop bp, стоящего перед iret.
cdg
Так все заработало после исправлений в файле или до этого, тоже с прерываниями все было в порядке?
Я пока с фриварным ядром возился, там тоже траблы, но человек исправляет, пока идет переписка.

Извиняюсь за долгое молчание, только на форум попал, завтра обязательно попробую новый код smile.gif
Gate
Цитата(cdg @ Oct 17 2006, 19:03) *
Так все заработало после исправлений в файле или до этого, тоже с прерываниями все было в порядке?

C исправленным, с оригинальным не проверял. Но мои исправления меняют поведение процессора от сброса до первой записи в IP (jump), так что думаю, что и с оригинальным должно работать тоже.
cdg
Со стеком я премудрил, от того и с прерываниями косяк вышел, в тестбенче откусил область стека sad.gif
Буду проверять, когда появится время, сейчас другой работы навалило. Еще могу сказать что в АРС ядре тот-же глючок, код то родственный smile.gif, лечится так-же. Вот еще бы утоптать их стэйт машины в память, что бы ядро ресурсов поменьше жрало, тогда не жизнь была, а сказка!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.