реклама на сайте
подробности

 
 
> ПЛИС и NIOS, приём данных NIOS, с логики на ПЛИС
sergey_ksv
сообщение Sep 5 2015, 13:43
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 5-09-15
Пользователь №: 88 292



Добрый день.

Помогите, пожалуйста, разобраться с первым проектом для NIOS.

Связываю логику на плис (Cyclone III) и nios. Если конкретнее - в проекте имеется : PLL(мегафункция) , различная логика(24МГц с PLL) и nios(120 МГц c PLL). Логика собирает и обрабатывает данные, далее данные передаются на nios для дальнейшей передачи по usb. Так же часть логики управляется по линии PC-USB-NIOS-логика.
Для приёма данных от логики из плис используется 32-х битная шина , и три управляющих сигнала: read - запрос данных, write - передача данных(пока линия активна - ожидаем приём данных), и latch - готовность данных на линии, по фронту этого сигнала срабатывает прерывание и nios заглатывает данные с 32-х битной шины. Т.е. по запросу READ от nios - логика начинает процесс передачи данных на шину, происходит это за несколько транзакций, сигнал WRITE устанавливается логикой пока данные не будут полностью переданы.
Собственно проблема - "данный интерфейс". Данные теряются или вообще с линии читаются нули. К замечанию по поводу что не успеваю отрабатывать захват данных ниосом и тем самым теряю их, то скажу что имеется запас по частоте(120/24), и данные валидны на линии не менее 150 клоков логики (24 МГц). Плюс к этому замечено, что если на вход 32 битного порта nios повесить константной значение - всё работает на ура (в коде - //.testdata_export ({32{1'b1}})). Копаю в сторону SDC с TimeQuest и возможного использования FIFO вместо этой бороды. Заранее спасибо всем откликнувшимся!
Код
//transmit module template
TransmitModule #(.outputDataWidth(outputDataWidth),              
                     .inputDataWidth(inputDataWidth)) transData (
                                               .clk(clk),
                                               .read(read),
                                               .wInputData(wInputData),                                                                                
                                               .wOutputData(wOutputData),
                                               .latchSignal(latchSignal),
                                               .write(write)
                                               );            
                          
                        
QSysNios u0 (
        .clk_clk                   (clk120),                   //                 clk.clk
        .pioled_export             (port),             //              pioled.export
        .parallelport_export       (parallPort),       //        parallelport.export
        .controlusb_export         (USBctrl),         //          controlusb.export
        .usbinterrupt_export       (USBirq),       //        usbinterrupt.export
        .usbadr_export             (USBadr),             //              usbadr.export
        .epcsflashprogrammer_dclk  (DCLKw),  // epcsflashprogrammer.dclk
        .epcsflashprogrammer_sce   (SCEw),   //                    .sce
        .epcsflashprogrammer_sdo   (SDOw),   //                    .sdo
        .epcsflashprogrammer_data0 (DATA0w), //                    .data0
        .testdatacontrolinput_export   ({1'b0,latchSignal,write}),   //     testdatacontrol.in_port
        .testdatacontroloutput_export  (read),  //                    .out_port
        .testdata_export           (wOutputData),           //            testdata.export
    //.testdata_export           ({32{1'b1}}),          
        .testcontrol_export        (wCommandTestReg)        //         testcontrol.export


Вот что в SDC на данный момент :
create_clock -name "clkRef" -period 41.666ns [get_ports {clkRef}]
derive_pll_clocks -create_base_clocks
set_clock_groups -exclusive -group {clkRef} -group {pll_inst|altpll_component|auto_generated|pll1|clk[0]}
set_clock_groups -exclusive -group {clkRef} -group {pll_inst|altpll_component|auto_generated|pll1|clk[1]}
set_clock_groups -exclusive -group {pll_inst|altpll_component|auto_generated|pll1|clk[0]} -group {pll_inst|altpll_component|auto_generated|pll1|clk[1]}


Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 17:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016