Перейти к содержанию
    

dim99

Свой
  • Постов

    119
  • Зарегистрирован

  • Посещение

Весь контент dim99


  1. Возможно, ли вычитать в OMAPL137 dsp текущий % загрузки процессора?
  2. http://ieeexplore.ieee.org/ довольно коммерческий, все статьи, которые нашел предлагают оплатить. Спасибо Sanyao за http://radhome.gsfc.nasa.gov/radhome/radda...addatabase.html. Там нашел довольно интересную информацию по nand, который применяем. MT29F8G08ABABAWP-12IT 8 Gb Nand / 16 Gb 42 нм КМОП Если я правильно понимаю, то пороговые значения ЛПЭ по ТЭ при воздействии ТЗЧ: LETo = 3,5 МэВсм2/мг.
  3. Стоит посмотреть в настройки проекта - могут быть подключены все подряд драйвера. Там есть галочка reduced drivers или что-то такое.
  4. Могу помочь с проектом на Nios. Реализовывал подобный проект с Ethernet на двух ядрах Nios с общей памятью.
  5. Думаю, вы и без меня знаете стоимость испытаний на ТЗЧ. Поэтому испытывать все - дорогое удовольствие. Я думал, что кто-то из своего опыта может подсказать, в какое семейство ПЛИС Altera лучше смотреть.
  6. То, что испытывать придется - это уже ясно. Просто сейчас есть время выбрать ту ПЛИС, которая будет лучшей из худших по ТЗЧ. И так получается, что выбираем заведомо из нерадстойких, а обычного industrial.
  7. Кто сталкивался или обладает информацией по применению industrial микросхем для космоса. Обычно говорят, что по накопленной дозе текущий уровень industrial держит в среднем 5 Крад. Если говорить о Тяжелых Заряженных Частицах, то на какой уровень пороговых линейных потерь энергии ЛПЭ можно ориентироваться. Например, интересует OmapL137 и Cyclone III, с какой вероятностью при пороге до 15 МэВ * см2 / мг не будет возникать ТЭ. Доступ к kosrad есть, но там подобных данных не нашел.
  8. Кто успел поработать с этим чудом подскажите, реально туда впихнуть Nios II или можно сразу забыть про это?
  9. Кто-нибудь пытался приделать автогенерацию версии билда и даты компиляции при сборке проекта в Nios2 ?
  10. Внесу свои пять копеек по поводу хранения данных в EPCS16 для Q13. В таком случае можно выставить Reduced Device Drivers и хорошо сэкономить на памяти. #include "epcs_commands.h" // адрес EPCS контроллера const alt_u32 EPCS_ADDR = EPCS_FLASH_CONTROLLER_0_BASE + EPCS_FLASH_CONTROLLER_0_REGISTER_OFFSET; // смещение параметров модуля в EPCS - 30 страница для хранения const alt_u32 EPCS_PARAMS_OFFSET = 65536*30; // режим байтов для EPCS const alt_u32 EPCS_BYTE_MODE = 0; void LoadEpcsData(alt_u8* destBuf, int length) { epcs_read_buffer(EPCS_ADDR, EPCS_PARAMS_OFFSET, destBuf, length, EPCS_BYTE_MODE); } void SaveEpcsData(alt_u8* srcBuf, int length) { epcs_write_enable(EPCS_ADDR); epcs_sector_erase(EPCS_ADDR, EPCS_PARAMS_OFFSET, EPCS_BYTE_MODE); epcs_write_buffer(EPCS_ADDR, EPCS_PARAMS_OFFSET, srcBuf, length, EPCS_BYTE_MODE); } Единственное не до конца понял, что за режим four_bytes_mode. Но стабильно работает при EPCS_BYTE_MODE = 0;
  11. Настроил VNC1L в режиме SPI с ATmega16. Пытаюсь проверить скорость записи на flash с помощью команды WRF. После отправки 15 байтов VNC1L перестает принимать данные (status_bit == VNCL_WR_REJECT) и виснет. Попытки прочитать статусный регистр или выгрести данные из буфера отправки VNC1L ни к чему не приводят. Каким образом разогнали до 25,6 кб.сек?
  12. Работаю с ad9833. Подключил к atmega 8535, по SPI отправляю настроечные слова. К ad9833 подключен генератор 16 Mhz. Данные, тики и уровни идут правильно - согласно datasheet. Генерирует sin и меандр. Треугольник так и не получилось настроить - в теории все работает при задании control_bit[1] = 1 Откопал чудо application note - взял из него пример, поигрался с частотами, но работает все через раз и максимально возможной частоты не показывает, все в пределе 1-10 кГц. Кто сталкивался с данной микросхемой, какие могут быть идеи насчет правильной настройки? привожу настроечное слово и код отправки по SPI // // app note Write16SPI(0x2100); Write16SPI(0x50C7); Write16SPI(0x40F0); Write16SPI(0xC000); Write16SPI(0x2000); // синус Write16SPI(0x2128); Write16SPI(0x6E14); Write16SPI(0x451E); Write16SPI(0x8000); Write16SPI(0x8000); Write16SPI(0xC000); Write16SPI(0xE000); Write16SPI(0x0002); #define CLOCK PORTB.1 // защелка #define FSYNC PORTB.2 // данные #define DATA_OUT PORTB.0 //------------------функция записи по SPI------------------- void Write16SPI(unsigned int data){ // счетчик цикла int K=16; int J=0; // unsigned char low_part; unsigned char hi_part; bit pin_data; // сохраняем младшую часть low_part = (unsigned char)(data & 0x00FF); // сохраняем старшую часть hi_part = (unsigned char)(data >> 8); // начало передачи данных FSYNC = 0; // выставляем данные Write8Bit(hi_part); // если старшие 8 бит - Write8Bit(low_part); // окончание передачи данных FSYNC = 1; } //------------------функция записи по SPI------------------- void Write8Bit(unsigned char data){ // счетчик цикла int K=8; int J=0; bit pin_data; K = 8; J = 0; // передаем 16 бит по одному while (K){ pin_data = (data & 128); DATA_OUT = pin_data; data <<= 1; // sprintf(buf, "%x", pin_data); // lcd_gotoxy(J,1); // lcd_puts(buf); // delay_ms(100); // // активный уровень clock CLOCK = 1; delay_us(10); //delay_ms(1); // декремент счетчика K--; J++; CLOCK = 0; delay_us(10); } }
  13. Возьмем конкретный датчик LIS3LV02. Цепляем к AVR и смотрим результаты. 1. Датчик выдает коды (2 байта) для выбранного диапазона измерения +\- 2 g или +\- 6 g. 2. Ориентация - когда датчик находится в таком состоянии, то по оси z получаем код, равный -1 g.
  14. Уж коль речь пошла про LCD, то вопрос по близкой теме: Где посмотреть документацию на Lumex LCM-S01602DSR/C (2 × 16 character display, 5 × 8 dot matrix) с CIII dev kit'a? то, что встречается даташит - 2 страницы Или стоит посмотреть, как работает ЖКИ на основе контроллера HD44780 и все станет ясно?
  15. wpost Вы кстати как инициализировали PHY? Хочется узнать, только у меня отпадает link, когда через MDIO выставляю контрольные биты для PHY(поэтому и приходится на PC режим задавать. чтобы срабатывал auto-neg).
  16. Да, отлаженный soft это всегда здорово, скажите отдельное спасибо vadimuzzz. пропадают первые 2 байта пакета - это как раз и есть align ip.
  17. 1. descriptor_memory: 4k, хотя можно меньше - 4 дескриптора x размер дескриптора. (2 - прием\отправка, 2 заглушки) 2. лучше отдельной памятью, но наверное можно и в основной. (в примере была отдельная) 3. hello_world.rar
  18. Есть один вариант: когда делал двухъядерную систему в каком-то талмуде говорилось про адреса ядер Nios II и соответствующей on-chip памяти. Так вот у меня все заработало только тогда, когда вставил одинаковые адреса у ядер и памяти. Попробуйте сделать, возможно поможет.
  19. Все разрешилось, прошу прощения. В SOPC builder проморгал связь: descriptor_memory->sgdma_rx, отсюда и проблемы.
  20. Ну вот, стоило перенести свой ethernet в другой проект, как тут же всплыли старые ошибки. После TseMacSgDmaReadInit заходит в TseMacRxRead выполняет alt_avalon_sgdma_do_async_transfer(sgdma_rx_dev, (alt_sgdma_descriptor *)rxDesc); и впадает в постоянную обработку прерывания TseMacSgDmaRxIsr. Дескрипторы в норме, отдаю ему currdescriptor_ptr, который подготовлен для записи данных. Результат выполнения async_transfer=0, ошибок нет. В прошлый раз эта проблема решилась, когда оставил все дескрипторы, как в примере vadimuzzz. Так теперь беру этот же работающий проект, переношу код и старые ошибки вылазят.
  21. А как понять, что происходит на шинах DQ и DQ_, когда приходит tristate_n=0? выполняется условие: 1. DQ = 16'bZ 2. data_out = DQ т.е. на пине будет 3-е состояние для внешнего устройства, а с внутреннего inout я забираю выставленное мною на времянке значение?
  22. И все-таки пока не понял, почему работает именно так, а не иначе. Возьмем рассмотренный до этого пример: module tristate_buff #(parameter bus_width=16) (input clk, input wire [bus_width-1:0] data_in, output reg [bus_width-1:0] data_out, inout wire [bus_width-1:0] DQ, input wire tristate_n ); assign DQ = (tristate_n == 1'b0) ? 16'bZ : data_in; always @(posedge clk) data_out <= DQ; endmodule управляющий сигнал tristate_n=0, то DQ=16'bZ - Z состояние если tristate_n = 1, то data_out = DQ так почему на времянке получается далеко не так? данные со входа на DQ не пишутся совершенно, а при tristate_n = 0 data_out=DQ, но ведь по логике это происходит при tristate_n = 1
  23. Хорошо, попробую дать пару тактов на считывание с шины. может и успеет. мне тоже интересно, почему это формируется на data_f и к тому же перевернутое...
  24. Решил не плодить темы и добавлю сюда вопрос. Есть flash 512 mbit. Хочу к ней написать модуль для чтения и записи, а затем прикрутить к шине Avalon на Nios II. Пока пробую сделать процедуру чтения без привязки к nios. Само чтение делаю как автомат состояний, потому что сигналы по разному во времени выставляются. Есть двунаправленная шина data_f, которая считывает данные при чтении и выставляет при записи. пытаюсь промоделировать все это дело в квартусе и получаю, что данные ни разу не считываются с data_f при чтении и не записываются в data_out_nii. Причем, если сделать из inout просто output и убрать assign, то все прекрасно работает. Понимаю, что ошибка где-то с inout с его использованием, также не ясна работа с условием в assign: module Flash512Mbit (clk,reset_n,cs,wr_en,rd_en,address_nii,data_in_nii,data_out_nii,cur_state,ce _n,we_n,oe_n,address_f,data_f); input wire clk; input wire reset_n; input wire cs; input wire wr_en; input wire rd_en; input wire [25:0] address_nii; input wire [15:0] data_in_nii; output reg [15:0] data_out_nii; output reg [3:0] cur_state; output reg ce_n; output reg we_n; output reg oe_n; output reg [25:0] address_f; inout wire [15:0] data_f; // local variables reg [15:0] data_in; reg [3:0] OE_cnt; reg SetAddr_cnt; reg WE_cnt; parameter Reset_st = 0, Main_st = 8, /*read states*/ WE_p = 1, SetAddr = 2, CE_a = 3, OE_a = 4, DataRd = 5, OE_CE_p = 6, WE_a = 7; reg [3:0] state; assign data_f = (cs && wr_en)? data_in_nii : 16'bZ; always @(state) begin case (state) Reset_st: cur_state <= 0; Main_st: cur_state <= 8; ... ... ... ... ... WE_a: cur_state <= 7; default: cur_state <= 15; endcase end // Determine the next state always @(posedge clk) begin if (!reset_n) begin ce_n <= 1; we_n <= 1; oe_n <= 1; address_f <= 0; OE_cnt <= 0; SetAddr_cnt <= 0; WE_cnt <= 0; state <= Reset_st; end else case (state) Reset_st: state <= Main_st; Main_st: begin if (cs && rd_en) state <= WE_p; else state <= Main_st; end SetAddr: begin address_f <= address_nii; if (SetAddr_cnt == 1) begin SetAddr_cnt <= 0; state <= CE_a; end else begin SetAddr_cnt <= SetAddr_cnt + 1; state <= SetAddr; end end ... ... ... DataRd: begin data_out_nii <= data_f; state <= OE_CE_p; end ... ... ... default: state <= Reset_st; endcase end endmodule Вопросы: 1. почему при cs=1 && wr_en=1 активно 3-е состояние - 16'bZ. по логике: (a=1) ? true : false 2. почему данные с data_f = 0123 не передаются на выходную шину data_out_nii, а появляется какая-то С480? или моделировать в квартусе двунаправленную шину и выставлять на ней данные для чтения некорректно?
  25. Появился хороший вопрос: Отправляю пакеты с pc, естественно посылается еще куча всего (broadcast к примеру), как среди этих всех пакетов отсеять свои? Понятно, что нужно определить какую-то служебную информацию в пакете, чтоб считать его своим. И как быть, если нужно обработать или скопировать пришедшие данные, когда уже пришел следующий пакет и возникает прерывание, ведь после него все мои данные от предыдущего пакета сотрутся? Или нужно выключать dma, а после обработки включать и отсылать пакет на PC с сообщением об успешном приеме, чтобы синхронизироваться. В общем, не пойму я пока этого процесса, где его можно подсмотреть?
×
×
  • Создать...