Цитата(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) Если у Вас есть ответы на сформулированные вопросы или Вы можете подсказать в чем корень моих бед - милости прошу

.
З.Ы. Пока только в Active HDL пытаюсь запустить, но макет на столе уже есть.