Jump to content

    

druzhin

Свой
  • Content Count

    298
  • Joined

  • Last visited

Community Reputation

0 Обычный

About druzhin

  • Rank
    druzhin
  • Birthday 03/17/1974

Контакты

  • Сайт
    http://vkontakte.ru/id60532632
  • ICQ
    0

Информация

  • Город
    Москва

Recent Profile Visitors

3180 profile views
  1. Всё что красное - проинициализировать. Например: reg [31:0] bus; reg bus_en; initial {bus, bus_en} = '0;
  2. module _synchronizer #( parameter integer pLENGTH = 2, parameter [0:0] INIT = 0 )( //---------------------------------------------------------- input rstin, input clkin, input clkout, input sin, output reg sout //---------------------------------------------------------- ); reg main_reg = INIT; // RS level triger for input pulses (* ASYNC_REG = "TRUE" *) reg [pLENGTH-1:0] in2out = {pLENGTH{INIT}}; // clkin -> clkout syncronizer for level (* ASYNC_REG = "TRUE" *) reg [pLENGTH-1:0] out2in = {pLENGTH{INIT}}; // clkout -> clk_in synronizer for level clear feedback wire sout_ack, main_en; //---------------------------------------------------------------------------------------------- // Input converter edge/level clkin -> level clkin //---------------------------------------------------------------------------------------------- always @(posedge clkin, posedge rstin) if (rstin) main_reg <= INIT; else if (main_en) main_reg <= sin; assign main_en = ~( sout_ack ^ main_reg ); //---------------------------------------------------------------------------------------------- // Forward syncronizer level clkin -> edge clkout //---------------------------------------------------------------------------------------------- always @(posedge clkout, posedge rstin) if (rstin) in2out <= {pLENGTH{INIT}}; else in2out <= {in2out[pLENGTH-2:0], main_reg}; assign sout = in2out[pLENGTH-1]; //---------------------------------------------------------------------------------------------- // Feedback syncronizer level clkout -> level clkin //---------------------------------------------------------------------------------------------- always @(posedge clkin, posedge rstin) if (rstin) out2in <= {pLENGTH{INIT}}; else out2in <= {out2in[pLENGTH-2:0], sout}; assign sout_ack = out2in[pLENGTH-1]; //---------------------------------------------------------------------------------------------- // end //---------------------------------------------------------------------------------------------- endmodule Применение всего этого выглядит так: ............ parameter integer Wsync = 2; ........... //=========== AZIMUTH domen2 > domen1 ============================== _synchronizer #( // 2 -> 1 .INIT ( 0 ), .pLENGTH ( Wsync )) sync21_azimwr ( .rstin ( ~d2i_SYS ), // <- domen2 .clkin ( d2_CLK ), // <- domen2 .sin ( d2i_AZIM_WR ), // <- domen2 .clkout ( d1_CLK ), // <- domen1 .sout ( d1o_AZIM_WR )); // -> domen1 ............
  3. У меня есть опыт! Я применял! Ксилинксовский MAC гигабит, гнали жирный поток данных с устройства на сервер, обратно получали тонкую струйку управления. MAC сидел на шине axi под microblaze, он жрал данные от DMA, тоже с корегена. Потом, году в 2016-2017, перешли на ком-блок, который сами же и допиливаем под свои нужды, comblock.com. Если надо подробности - в понедельник на работе.
  4. Однозначно - светодиоды подключены всегда к плюсу и зажигаются землей. Так делают традиционно с прошлых времен. 1. с древних времен n-mos логики, или как ее там. 2. когда у комплементарных выходов нижний транзистор был мощнее долгое время.
  5. Выделитель фронтов. Предварительного подавления дребезга НЕТ. Если входной сигнал не синхронный, то надо сначала поставить простейший подавитель дребезга или еще какой-нибудь фильтр. `timescale 1ns / 1ps module _front ( input CLK, input IN, output logic POSwire, NEGwire, FRONTwire, output logic POSreg, NEGreg, FRONTreg ); //------------------------------------------------------ logic IN0; initial begin IN0=0; POSreg=0; NEGreg=0; end always @(posedge CLK) IN0 <= IN; assign POSwire = IN & ~IN0; assign NEGwire = ~IN & IN0; assign FRONTwire = IN ^ IN0; always @(posedge CLK) POSreg <= POSwire; always @(posedge CLK) NEGreg <= NEGwire; always @(posedge CLK) FRONTreg <= FRONTwire; endmodule /* _front front ( .CLK(CLK), .IN(), .POSwire(), .NEGwire(), .FRONTwire(), .POSreg(), .NEGreg(), .FRONTreg() ); */
  6. Напишите этому человеку: andrey-yurin.livejournal.com Он долго и серьезно занимается видеообработкой на fpga.
  7. Спасибо! Значит вот как надо самому использовать свой пользовательский compxlib.cfg и подключать его в батник. Разницы не заметил.
  8. Скачайте лучше 6.3 со всеми сервиспаками. Это последняя версия в шестом семействе, самая стабильная и малоглюкавая.
  9. Questasim 10.7c Новшество - не воспринимает в файле modelsim.ini параметр VoptFlow = 0. Не воспринимает в *.bat и *.opt файлах параметр -novopt. При VoptFlow = 0 или наличии -novopt прога вылетает с ошибкой. Обьяснение от Mentor - эти параметры вредны, бла-бла-бла, короче сами прочитаете сообщение, которое выдаст прога при попытке их использовать. Пытаюсь скомпилировать библиотеки стандартным батником %Xilinx%\bin\nt64\compxlib -s questasim -64bit -arch all -lib all -l all -dir %MODEL_TECH%\..\Xilinx\ -p %MODEL_TECH%\ -log compxlib.log -w Переменные окружения у меня MODEL_TECH = путь до \win64, например C:\MentorGraphics\questasim64_10.7c\win64 XILINX = путь до \ISE, например C:\Xilinx\14.7\ISE_DS\ISE Ожидаю, что скомпилированные библиотеки будут в папке questasim64_10.7c\Xilinx\, как я прописал в батнике. Хрен там! Библиотеки "emty". Но папка Xilinx появилась с каким-то содержимым и подпапками. Лезу в подпапки этой папки ...\Xilinx\, смотрю файлы *.log. Вижу там **Error (suppressible): (vlog-12110) All optimizations are disabled because the -novopt option is in effect. Смотрю в папке Xilinx и в подпапках файлы *.cmd, в каждом файле есть строки типа C:\MentorGraphics\questasim64_10.7c\win64\/vlog -source -novopt -64 -work unisims_ver -f Хрен знает откуда там взялись эти -novopt. Короче - во всех файлах *.cmd из папки и подпапок questasim64_10.7c\Xilinx\ я уничтожил параметр -novopt. Потом запустил батник questasim64_10.7c\Xilinx\.cxl.questasim.nt64.cmd и всё хорошо! Библиотеки скомпилировались! Дальше я отключил оптимизацию, типа как раньше VoptFlow = 0. В файле modelsim.ini в секции [vopt] я прописал два параметра [vopt] Coverage = sbceft CoverOpt = 1 Наступило счастье.
  10. Geling это фамилия кадровички или название фирмы?
  11. Цитата(_alex__ @ Feb 16 2017, 00:41) Нужно синтезировать мультиплексор на 32 входа. Оптимизировать колличество логических элементов входящих в него. В каком САПР это возможно сделать и какой САПР может визуализировать синтезированную схему т.е. логические элементы и связи между ними? Какая нужна скорость? Может нужен конвейерный mux, чтобы уложиться в частоту.
  12. Цитата(Fitc @ Feb 13 2017, 22:04) Если не установлен "Package control", то установить через "Tools"-> "Install package control ...". Далее нажать "Preferences" -> "Package control", ввести install Package, нажать enter, ввести SystemVerilog, нажать enter Плагин установился. Буду пробовать. Спасибо.
  13. Цитата(Fitc @ Jan 8 2017, 19:58) Недавно перешел с Notepad++ на VisualStudio code + плагин SystemVerilog. Недавно узнал про sublime и как по мне он лучше visual studio code. Также собираюсь использовать systemverilog assistance из HDL Designer, он содержит большой функционал по работе с UVM и готовые шаблоны компонентов UVM. Как на это красноглазое поделие sublime поставить какой-нибудь верилог-плагин?
  14. Synplify не хочет выкидывать неиспользуемые подмодули некого модуля, который входит в разные сборки проекта с разной функциональностью.