Jump to content

    

xxxmatrixxx

Участник
  • Content Count

    88
  • Joined

  • Last visited

Community Reputation

0 Обычный

About xxxmatrixxx

  • Rank
    Частый гость
  • Birthday 05/31/1985

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

1120 profile views
  1. я именно его и скачал, переделал wishbone под avalon-mm, сейчас смотрю по коду карту регистров этой коры а насколько верно данная кора отрабатывает? есть ли опыт использования ее?
  2. Может есть у кого Can 2.0B под другую шину(например, AXI от Xilinx) с исходниками, желательно на veriloge? кто-нибудь использовал Can Protocol Controller с OpenCores, насколько верно отрабатывает данный модуль, и есть ли на него описание у кого-нибудь, чтобы по коду не копаться?
  3. Здравствуйте, уважаемые форумчане Возникла необходимость использования Can шины в проекте на Cyclone4, я почему-то был уверен, что есть IP Core Can<->Avalon-MM(Avalon-ST), но такой коры в свободном доступе нет может есть у кого рабочая IP Core Can<->Avalon-MM(Avalon-ST), чтобы можно было ее использовать в QSYS в связке с NIOS2? спасибо, буду рад любой помощи
  4. спасибо большое за ответ посмотрел электрику: на моем узле стоит микросхема KSZ8041TLI и резонатор ABM7-25.000MHZ-D2Y-T на стороннем узле стоит Ethernet switch KSZ8995MAI и резонатор ABM7-25.000MHZ-D2Y-T данное решение было принято до меня, я поднимаю только проект ПЛИС, но вот об этом резонаторе ABM7-25.000MHZ-D2Y-T и фирме, что его производит, слышу впервые, по его техническим характеристикам точность выходит +-30ppm, реально замерить не могу, т.к. сижу на карантине, как и вся страна... так же заметил по электрике, что рекомендовано к резонатору ставить кондеры 18пФ, а стоят 22пФ - может ли это влиять на стабильность клока? использовал ли кто-нибудь резонатор ABM7-25.000MHZ-D2Y-T в своих разработках, какие впечатления?
  5. Здравствуйте, уважаемые форумчане в своем проекте для обмена по Ethernet через оптику была поставлена микросхема KSZ8041TLI, которая работает на скорости 100 Мбит/c, в целом скорость небольшая, но вот при состыковке с другим модулем, на которой стоит другая оптика, скорость передачи существенно режется(если соединять 2 одинаковых моих модуля скорость 80 мбит\с, точно так же и со сторонним модулем, если соединить мой модуль и сторонний, то скорость около 7 мбит\с) из данных диаграмм получается следующее: Input setup time = 40 - 25 = 15ns ???Input hold time = 19ns??? Output setup time = 10ns output hold time = 0ns я не понимаю, как их этих диаграмм мне вычислить Input hold time, я взял пока минимальное Tod я решил поставить констрейны на данную микросхему, получились у меня они вот такие: #*********************** CLOCKS ************************** create_clock -period "25 MHz" -name enet0_rx_clk [get_ports {ETH0_RX_CLK}] create_clock -period "25 MHz" -name enet0_tx_clk [get_ports {ETH0_TX_CLK}] set IMD 15 set ImD 19 set OMD 10 set OmD 0 #************************* INPUT ************************* set_input_delay -add_delay -clock enet0_rx_clk -max $IMD [get_ports {ETH0_RX_DV ETH0_RX_ERR ETH0_RXD*}] set_input_delay -add_delay -clock enet0_rx_clk -min $ImD [get_ports {ETH0_RX_DV ETH0_RX_ERR ETH0_RXD*}] post_message -type info "Input Max Delay = $IMD" post_message -type info "Input Min Delay = $ImD" #************************ OUTPUT ************************* set_output_delay -add_delay -clock enet0_tx_clk -max $OMD [get_ports {ETH0_TX_EN ETH0_TXD*}] set_output_delay -add_delay -clock enet0_tx_clk -min $OmD [get_ports {ETH0_TX_EN ETH0_TXD*}] post_message -type info "Output Max Delay = $OMD" post_message -type info "Output Min Delay = $OmD" set_false_path -from * -to [get_ports {ETH0_RSTN}] у меня следующие вопросы: 1. правильно ли вычислены по данной диаграмме соответствующие задержки? 2. чему равна задержка Input hold time? 3. есть ли у кого пример sdc файла с констрейнами для данной микросхемы KSZ8041TLI ? спасибо, буду рад любой помощи
  6. пробовал сдвинуть фазу на 90 градусов для 2го интерфейса, но не помогло, так же объединяет не могли бы скинуть пример. как запрещать оптимизацию quartus для моего примера, пробовал вот так: wire eth0_pll_clk_2p5/* synthesis keep */; wire eth0_pll_clk_25/* synthesis keep */; wire eth0_pll_clk_125/* synthesis keep */; wire eth1_pll_clk_2p5/* synthesis keep */; wire eth1_pll_clk_25/* synthesis keep */; wire eth1_pll_clk_125/* synthesis keep */; wire eth2_pll_clk_2p5/* synthesis keep */; wire eth2_pll_clk_25/* synthesis keep */; wire eth2_pll_clk_125/* synthesis keep */; не помогло
  7. Ничем не отличаются, я хотел сделать независимые клоки для каждого из них, чтобы влезть по констрейнам для каждого
  8. Здравствуйте, уважаемые форумчане сейчас хочу запустить на своей плате 2 Ethernet, для этого планировал использовать 2 PLL, но Quartus их оптимизирует и сводит к одной и все клоки тянет от нее, тогда я попробовал сделать 1у PLL, но увеличил количество выходов с нее с 3х до 6и - Quartus и здесь сократил количество выходов с PLL с 6и до 3х, и относительно них вел цепи должно быть вот так(RTL Viewer): вместо этого Quartus приводит это вот к этому(Technology Map Viewer): вот кусок кода: wire eth0_pll_clk_2p5; wire eth0_pll_clk_25; wire eth0_pll_clk_125; wire eth1_pll_clk_2p5; wire eth1_pll_clk_25; wire eth1_pll_clk_125; wire eth2_pll_clk_2p5; wire eth2_pll_clk_25; wire eth2_pll_clk_125; eth_pll eth_pll_inst ( .rst ( !any_rst_n ) ,.refclk ( CLOCK_25_FPGA ) ,.outclk_0 ( eth0_pll_clk_2p5) ,.outclk_1 ( eth0_pll_clk_25) ,.outclk_2 ( eth0_pll_clk_125) ,.outclk_3 ( eth1_pll_clk_2p5) ,.outclk_4 ( eth1_pll_clk_25) ,.outclk_5 ( eth1_pll_clk_125) ,.outclk_6 ( eth2_pll_clk_2p5) ,.outclk_7 ( eth2_pll_clk_25) ,.outclk_8 ( eth2_pll_clk_125) ); //========================================================= `ifdef ENABLE_ETH1 wire eth1_mdio_oen; wire eth1_mdio_out; wire eth1_mode; wire eth1_ena_10; reg eth1_tx_clk; eth_altddio_out eth1_altddio_out_inst ( .aclr ( !any_rst_n ), .datain_h ( 1'b1 ), .datain_l ( 1'b0 ), .outclock ( eth1_tx_clk ), .dataout ( ETH1_GTX_CLK ) ); always @(*) begin if (any_rst_n == 1'b0) eth1_tx_clk <= 1'b0; else if (eth1_mode) eth1_tx_clk <= eth1_pll_clk_125;// GbE Mode = 125MHz clock else if(eth1_ena_10) eth1_tx_clk <= eth1_pll_clk_2p5;// 10Mb Mode = 2.5MHz clock else eth1_tx_clk <= eth1_pll_clk_25; // 100Mb Mode = 25MHz clock end assign ETH1_MDIO = ( !eth1_mdio_oen ) ? ( eth1_mdio_out ) : ( 1'bz ); assign ETH1_RSTN = !epcount[MSB-1]; `endif /*ENABLE_ETH1*/ //========================================================= `ifdef ENABLE_ETH2 wire eth2_mdio_oen; wire eth2_mdio_out; wire eth2_mode; wire eth2_ena_10; reg eth2_tx_clk; eth_altddio_out eth2_altddio_out_inst ( .aclr ( !any_rst_n ), .datain_h ( 1'b1 ), .datain_l ( 1'b0 ), .outclock ( eth2_tx_clk ), .dataout ( ETH2_GTX_CLK ) ); always @(*) begin if (any_rst_n == 1'b0) eth2_tx_clk <= 1'b0; else if (eth2_mode) eth2_tx_clk <= eth2_pll_clk_125;// GbE Mode = 125MHz clock else if(eth2_ena_10) eth2_tx_clk <= eth2_pll_clk_2p5;// 10Mb Mode = 2.5MHz clock else eth2_tx_clk <= eth2_pll_clk_25; // 100Mb Mode = 25MHz clock end assign ETH2_MDIO = ( !eth2_mdio_oen ) ? ( eth2_mdio_out ) : ( 1'bz ); assign ETH2_RSTN = !epcount[MSB-1]; `endif /*ENABLE_ETH2*/ как заставить Quartus сгенерировать то, что я хочу, т.е. либо 2 PLL, либо одну PLL с 6ю, а не 3мя выходами? спасибо, буду рад любой помощи
  9. Здравствуйте, уважаемые форумчане сейчас встрял вопрос о том, чтобы написать драйвер для моей карточки PCIE ->3 Ethernet удобнее всего это реализовать, если бы на PCIE видны были отдельно 3 различных устройства, а не одно, реализуется это через функции в настройках самой PCIE коры, которая доступна, если используешь PCIE кору под Avalon-ST, но вот под Avalon-MM такой возможности нет я уже реализовал PCIE-> 1 Ethernet, весь обмен внутри ПЛИС ведется через Avalon-MM есть ли возможность подстроить каким-либо образом данную кору PCIE Avalon-MM для реализации 3х устройств через функции и каким образом это сделать? или может есть написанная кора, которая делает из PCIE Avalon-ST выход на Avalon-MM(идентично тому, что выходит у коры PCIE Avalon-MM), чтобы не заниматься разбором и формированием пакета на Avalon-ST?
  10. пробовали насильно их переводить в юбунте на 1Гбит/с, через dmesg смотрели, линк поднимался(буквально на 1 сек), а потом сразу падал...
  11. Здравствуйте, уважаемые форумчане ситуация следующая: 1. есть проект на ПЛИС, который фактически реализует сетевую карту PCIE<->ETHERNET, использовалась IP Core Triple Speed Ethernet(TSE) для конфигурации MAC уровня, а так же для PHY стоит микросхема dp83867is 2. со стороны ПК стоит встроенная сетевуха Realtek GbE Family Controller 3. конфигурация MAC и PHY происходит через jtag master c помощью tcl скрипта, сейчас уже перешли через драйвер под linux через PCIE(были использованы стандартные средства altera для конфигурации PHY и MAC) на всех картах сетевых, к которым я пробовал подключать мою сетевую карту PCIE<->ETHERNET, поднимается линк на 10 и 100 Мбит/с пробовал поднять линк на 1000 Мбит/с (конечно, со стороны PHY), линк поднимается только, если комп вкл, но я остановил загрузку на конфигурации BIOS как только грузится Win10 или Ubuntu 16.04, линк на 1000 Мбит/с не поднимается, я пробовал ставить самые новые драйвера под Win10, но не помогло причем я пробовал на разных компах с разными сетевухами(встроенными и внешними, т.е. которые делают PCI<->ETHERNET), даже на ноутбуке, линка нет, но вот на сетевой карте TP-LINK TG-3468 линк на 1000 Мбит/с поднимается как на Win10, так и на Ubuntu 16.04 сталкивался ли кто-нибудь с такими проблемами по поднятию линка на 1000 Мбит/с? может есть идеи, где копать? пока пробовал только переустановку драйверов для сетевых карт, к которым подключался я(т.е. встроенные в материнку и внешние покупные) - не помогло
  12. огромное спасибо за ссылку на эту статью, там автором уже указываются трудности снятия с вывода altddio_out через сигналтаб кстати, нашел более подробное обсуждение на форуме интела: https://forums.intel.com/s/question/0D50P00003yyTLpSAM/altddioout-for-clock-output-of-chip я полагался в основном на сигналтаб и считал его безаговорочным и правдивым средством, чтобы понять, что реально происходит внутри проекта, а тут придется все таки осцилом вставать, что не так удобно... может есть все таки способ увидеть сигнал с altddio_out через сигналтаб на cyclone5? был ли у кого опыт? осталась тогда проблема с инициализацией mac уровня TSE в режиме rgmii
  13. спасибо, большое у меня RGMII, но относительно настройки вашей для SGMII через PCS регистры, у меня все сделано верно... я не смог победить пропуск eth_tx_clk через altddio_out и выдачу на выход ETH_GTX_CLK(у меня приложены в самом начале темы соответствующие файлы), все так же на выходе 0 моделсим тоже чушь показывал, пока eth_tx_clk не сделал регистром wire eth1_pll_clk_2p5; wire eth1_pll_clk_25; wire eth1_pll_clk_125; pll eth1_pll_inst ( .rst ( !any_rst_n ) ,.refclk ( CLOCK_25_FPGA ) ,.outclk_0 ( eth1_pll_clk_2p5 ) ,.outclk_1 ( eth1_pll_clk_25 ) ,.outclk_2 ( eth1_pll_clk_125 ) ,.outclk_3 ( ) ,.outclk_4 ( ) ); wire eth1_mdio_oen; wire eth1_mdio_out; wire eth1_mode; wire eth1_ena_10; reg eth1_tx_clk; eth_altddio_out eth1_altddio_out_inst ( .aclr ( !any_rst_n ), .datain_h ( 1'b1 ), .datain_l ( 1'b0 ), .outclock ( eth1_tx_clk ), .dataout ( ETH1_GTX_CLK ) ); always @(*) begin if (any_rst_n == 1'b0) eth1_tx_clk <= 1'b0; else if (eth1_mode) eth1_tx_clk <= eth1_pll_clk_125;// GbE Mode = 125MHz clock else if(eth1_ena_10) eth1_tx_clk <= eth1_pll_clk_2p5;// 10Mb Mode = 2.5MHz clock else eth1_tx_clk <= eth1_pll_clk_25; // 100Mb Mode = 25MHz clock end module eth_altddio_out ( aclr, datain_h, datain_l, outclock, dataout); input aclr; input [0:0] datain_h; input [0:0] datain_l; input outclock; output [0:0] dataout; wire [0:0] sub_wire0; wire [0:0] dataout = sub_wire0[0:0]; altddio_out ALTDDIO_OUT_component ( .aclr (aclr), .datain_h (datain_h), .datain_l (datain_l), .outclock (outclock), .dataout (sub_wire0), .aset (1'b0), .oe (1'b1), .oe_out (), .outclocken (1'b1), .sclr (1'b0), .sset (1'b0)); defparam ALTDDIO_OUT_component.extend_oe_disable = "OFF", ALTDDIO_OUT_component.intended_device_family = "Cyclone V", ALTDDIO_OUT_component.invert_output = "OFF", ALTDDIO_OUT_component.lpm_hint = "UNUSED", ALTDDIO_OUT_component.lpm_type = "altddio_out", ALTDDIO_OUT_component.oe_reg = "UNREGISTERED", ALTDDIO_OUT_component.power_up_high = "OFF", ALTDDIO_OUT_component.width = 1; endmodule
  14. сейчас прогнал IP Core TSE через Modelsim, переложил код tcl на systemverilog, увидел ту же картину - не уходит пакет с MAC уровня при передаче(данные на avalon-ST с присутствием StartOfPacket и EndOfPacket от mSGDMA в TSE вижу, а вот на TSE_TXD их нет, и сигнал TX_CTRL не выставляется) возможные причины: 1. неверный пакет 2. неверная инициализация MAC уровня есть ли у кого пример на Си (на любом языке) инициализации MAC уровня, а так же в текстовом виде, какой-нибудь пакет с CRC32, чтобы я мог его использовать как эталон, то не могли бы скинуть? спасибо, буду рад любой помощи