LordVader
-
Постов
127 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные LordVader
-
-
Спасибо!
А что за разъём (тип)?
-
Подскажите плз, у кого есть beagleboneblack -- туда JTAG поставить таки можно, припаяв разъём?
-
Стандарт не предусматривает отличную от BGA корпусировку. Так что выбора нет.
Про стандарт я в курсе. Но никто не обязывает ему следовать. Потому и вопрос, вдруг у кого есть.
-
Опубликовано · Изменено пользователем LordVader · Пожаловаться
Сабж вообще бывает? Гуглёж дал намёки, что раньше выпускались диммы с такими.
Очень хочется, потому что allwinner A13 умеет только DDR2, хотя сам в QFP.
Частоты устроят и минимальные, за ними не гонимся.
-
Остаётся вопрос, почему в другом дистрибе ровно те же версии бинутилей всё линковали без -B.
Собраны с разными настройками?
-
В опциях avr-objcopy надо указать целевую архитектуру (avr:51), но навскидку не скажу как именно, какими ключами это сделать.
"-O elf32-avr" -- разве не указание архитектуры?
Прочёл ман и дошло...
Сергей, спасибо за подсказку.
добавил в avr-objcopy "-B avr:51" и всё слинковалось.
-
стоят avr-gcc, avr-binutils и libc-avr.
Делаю из бинарника объектный файл с целью влинковать его:
>avr-objcopy -I binary -O elf32-avr --rename-section .data=.progmem.data,contents,alloc,load,readonly,data --redefine-sym _binary_top_mlz_start=fpga --redefine-sym _binary_top_mlz_end=fpga_end top.mlz top.o
тут всё ок.
далее линкую:
>avr-gcc -mmcu=atmega128 -Wl,-Map=core.map zx.o interrupts.o main.o ps2.o spi.o depacker_dirty.o rs232.o rtc.o atx.o joystick.o version.o tape.o kbmap.o top.o -o core.elf /usr/lib/gcc/avr/4.5.3/../../../avr/bin/ld: avr architecture of input file `top.o' is incompatible with avr:51 output collect2: ld returned 1 exit status
Версии:
>avr-gcc --version avr-gcc (GCC) 4.5.3 >avr-objcopy --version GNU objcopy (GNU Binutils) 2.20.1.20100303
ЧСХ, те же версии тулзов в mint 11 64bit линкуют всё на ура.
Я неправ в опциях avr-objcopy или это баг в тулзах?
И (риторическое) что делать? :)
-
А нет ли у кого леченного libsys_cpt.so для Linux 64?
Поискать в этой либе метку l_рubkеу_vеrify (набрать латиницей), заткнуть 31 c0 c3 (xor eax,eax:ret). Как-то так.
-
Граждане, а насколько хорошо Quartus версий 9-10-11 дружит с Windows XP 64bit? Особенно интересует при наличии в системе 4+ Gb памяти.
Про XP не знаю, с vin7 64 сабж дружит замечательно. Правда с проектами, требующими более гига, пока не сталкивался.
64битная версия процентов на 5-10 быстрее 32битной (сравнивал на одном проекте, общее время порядка получаса).
Также интересует "восприимчивость" Квартусов к многоядерным процам - насколько наличие дополнительных ядер влияет на скорость работы?На том же проекте: маппер вообще не использует более 1 ядра, фиттер говорит, что использует одно ядро 100% времени, остальные - 35-40% времени. Причём по этапам фиттинга использование ядер разнится - иногда все 4 пашут под 100% каждое, иногда все 4, но загружены не полностью, иногда в одно ядро.
Еще много ядер использует timequest и впараллель с ним работает assembler, но у меня по времени это совсем незаметный минимум на фоне первых двух тасков.
-
Ещё при моделировании могут вылезти баги. Старайтесь в верилоге не использовать pull1, pull0. При передаче таких сигналов в ВХДЛ они превратятся не в 1 и 0, а в Z, и моделирование сломается. modelsim 6.2k
-
Просто память, например такую:
always @(posedge clk) begin if( rd_ena ) rd_data <= mem[rd_addr]; if( wr_stb ) mem[wr_addr] <= wr_data; end
квартус замечательно кладёт в блок памяти на кристалле.
Но если нужна память с byte enable'ами по записи, то анчинаются чудеса. Или память полностью в LE оказывается. Или таки в блоке памяти, но дублируется в LE. Или же вметсо 1 блока памяти берутся два и используются наполовину каждый.
Вот так вот - дублируются логикой все биты памяти.
always @(posedge clk) begin if( rd_ena ) rd_data <= mem[rd_addr]; if( wr_stb ) mem[wr_addr][15:8] <= wr_bmask[1] ? wr_data[15:8] : mem[wr_addr][15:8]; if( wr_stb ) mem[wr_addr][ 7:0] <= wr_bmask[0] ? wr_data[ 7:0] : mem[wr_addr][ 7:0]; end
Вот так вот - 2 блока по половинке в каждом и 2 LE вдобавок.
always @(posedge clk) begin if( rd_ena ) rd_data <= mem[rd_addr]; if( wr_stb && wr_bmask[1] ) mem[wr_addr][15:8] <= wr_data[15:8]; if( wr_stb && wr_bmask[0] ) mem[wr_addr][ 7:0] <= wr_data[ 7:0]; end
verilog, quartus 9.1, stratix 2, блоки M512
Подскажите, если кто знает рецепт, можно ли написать так, чтоб квартус правильно заинферил?
Про мегафункции в курсе, но хочется сделать красиво.
-
Хороша у Вас машинка. НО!
http://en.wikipedia.org/wiki/Physical_Addr...crosoft_Windows
Моежт я ошибаюсь, но мне кажется что будь даже 32 гига памяти, и поддержка такой памяти осёй, 32битные проги всё равно не осилят более 4 гигов заюзать. Надо ставить 64-битную ось и 64-битные прилаги, независимо от выбора виндос-линух.
-
Я придираюсь к лицам,
Переход на личности.
И система команд у него - Reduced Instruction Set от PDP-11.Это вам тоже TI сказала?
-
И не путайте LOAD-STORE архитектуру и RISC - это две не пересекающиеся вещи. RISC не обязан быть LOAD-STORE, и наоборот, LOAD-STORE не обязан быть RISC.
Я вправе иметь своё мнение. И моё мнение таково, что RISC я не понимаю как дословную аббревиатуру. И знакомство с некоторым кол-вом процессоров заставляет думать, что риск - это не кол-во команд, а прежде всего их простота. и в том числе load-store. И почему-то так считают некоторые умные люди, которые пишут книги.
Что касается переменной длины инструкций у MSP - это кажущаяся с первого поверхностного взгляда вещь. Обман зрения. На самом деле длина инструкции у него всегда 16 бит, а все эти якобы удлинения - это автоинкрементная адресация с регистром R7 - просто выборка операнда из памяти.Автоинкрементация она, когда проц не конвееризированный, как 430ый в оригинале или как топиковый. Посмотрите, как извращаются в современных x86-процах на этапе "fetch opcode".
И только он вправе корректно определять архитектуру своего детища, если ее не открывает в виде схем и/или исходных текстов.Да ради бога. А я вправе определять архитектуру его детища, как мне удобно :)
-
Опубликовано · Изменено пользователем LordVader · Пожаловаться
Ну можно конечно посчитать кол-во команд, и сказать что риск (ага, меньше чем у пика).
А можно подумать вот как:
каждлая команда в 430 имеет длину от 1 до 3 слов. При этом она может инициировать от 0 до 3 аксессов в память, выполняя вычисления с выбранными и записываемыми данными.
А теперь сравним с настоящими рисками: mips, sparc, power, arm: длина команды фиксированная, операции или внутри регистров, или запись-чтение регистров из памяти без операций над данными.
-
MSP, который голимый RISC вплоть аж до того, что счетчик команд и указатель стека в РОНах, вследствие чего декодера инструкций, можно сказать, почти нет, все сигналы идут проводами прямо на исполнительные блоки, да и самих команд (классов команд по формату опкода) раз, два и обчелся.
Я конечно извиняюсь, но какой же мсп430 риск? Он вообще без регистров работать может (ну кроме пц, сп, константных), держа все переменные в памяти. И в пределах 1 команды делать 2 раза чтения и 1 раз запись в память модифицированного значения. Что-то как-то других рисков ТАКИХ я не видел :)
-
И что-то мне не нра как квартус его компилирует, особенно когда представляет не 2073 16-битных регистра, а 2073*16 1-битных регистров... :07:
Ну в FPGA всё равно все триггеры - 1битные, потому какая разница? ;-)
А зато вот можно вместо сдвигового регистра использовать память, сразу 16-битными словами.
-
Опубликовано · Изменено пользователем LordVader · Пожаловаться
периферия своя. Если чего нет- додумаем. главное чтоб ядро было не кривое. Я давненько искал нечто подобное. Наконец-то появилось ).На какой тактовой работать может? 50 МГц?
Ну как и любое не оптимированное под ФПГА ядро, да ещё и цыск (что бы там не писали в ТИ), оно жрёт много, а работает медленно. Чуть-чуть до 40мгц не дотягивало, но это был ква 6.1 (для циклона 2).
PS: Я автору кинул фикс под ДЕ1, он обещал выложить как только, так сразу (у него ребятёнок родился).
-
Опубликовано · Изменено пользователем LordVader · Пожаловаться
Ограничение вроде одно - из ОЗУ выполняться не может. А я озу ставил и до 32 кило (с сотвествтуеющей правкой линкер-скрипта, ессно). И даже внешнее на ДЕ1 подключал ОЗУ. В целом, ядро хорошее, относительно мелкое (без дебага - в районе 1600 LE), а вот попытки сэмулировать периферию реальных чипов имхо нафиг не нужны.
Да,и ещё у автора там некий бардак с инклудами (он и сам признаёт). Я эту тему, впрочем, уже тут поднимал...
-
создаем к примеру массив из 512 элементов std_logic_vector(0 to 15)
в Cyclone-2 он отжирает кучу вентилей, поэтому в простые не лезет. = 5200 LE
в асех 1к - оно делается в RAM + 700 LE
Это вы что ли асинхронную память делаете? Так в ацексах блоки памяти могут быть асинхронными, а в цыцлонах - уже нет. Сделайте синхронную и всё ляжет в блоки памяти цыклонов.
-
А мне кажется, что и acex1k тоже не стоит использовать без серьёзных на то оснований. Медленноватое, оч. мало LE, дорогое. Имеет смысл только если много 5в сигналов.
Стабилизаторы - да любые. LM1117 вон.
-
Замечал такое же для acex1k, от 6ого к 7ому или 8ому (не помню точно). Кол-во LE увеличивалось. При том, что тайминги оставались с точностью до сотых долей наносекунды такими же. Оптимизации ставились те же самые.
-
Если есть специалисты кто такие веши моделировал помогите пожалуйста!! Заранее благодарен!! :smile3046:
module tb; ... wire [7:0] data; ... device dut( .data(data) ... ... assign data = give_data_to_device ? data_for_device : 8'hZZ; ... endmodule module device ( inout wire [7:0] data, ... ); ... тут data должна назначаться так же, как и выше ... endmodule
и всё работает. Конфликты на такой шине приводят к иксам. Если нету источников - будут Z-ы (всё видно на картинках в моделсиме). Можно сделать tri1 иди tri0 вместо вайра - будет вместо Z-ов подтяжка к 1 или к 0.
-
Уважаемые коллеги подскажите!!!
1) Возник такой вопрос, как обозначать двунаправленый порт ввода-вывода в языке Verelog пр написании testbench для modelsim!!
inout ?
2) В проекте Quartus на нижней иерархии создал с помощью мугафункций Altera двухпортовую RAM память. Про модуляции в modelsim, я вижу что выход двухпортовую RAM находится в третьем состоянии. У меня возникла мысль, что это из-за того что непроинициализирована память! У меня возник вопрос как проинициализировать память в нижней иерархие проекта!!??integer i; initial for(i=0;i<размер_памяти;i=i+1) tb.memory.array[i]=0;
tb - имя модуля тестбенча, в котором вы этот initial пишете, memory - имя памяти, как она инстанциирована в tb, а array - имя в ней массива, который непосредственно и есть память. Или то же самое напишите в модуле памяти, без иерархических имён только, сразу array=0;
force'ить из верилога VHLDные сигналы
в Языки проектирования на ПЛИС (FPGA)
Опубликовано · Изменено пользователем LordVader · Пожаловаться
Дано: modelsim 10.0b
Из кода на верилоге (тестбенч) пытаюсь сделать что-то вроде
q75.u0.RC -- это signal в VHDLном модуле.
Получаю:
Есть очевидный метод, заключающийся в переписывании VHDL-кода с целью введения нужного функционала.
Но что же получается, из вериложного бенча нельзя форсить сигналы в глубине VHDLного кода? Или можно, но я просто не знаю как? Если так, то как надо?