MarSS
Участник*-
Постов
12 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о MarSS
- День рождения 25.07.1982
Контакты
-
Сайт
Array
-
ICQ
Array
Информация
-
Город
Array
-
не понимаю что происходит с картой - она перегружает машину при обращении. Осваиваю PCI карту ADM-XRC-4/LX160-10, пытаюсь собрать пример из ADM SDK User Guide: Synopsis The Simple FPGA design demonstrates how to implement host-accessible registers in an FPGA design. /* ** simple.v - Trivial design demonstrating how to implement ** registers in the FPGA. `timescale 1ns / 100ps module simple( lclk, lreset_l, lwrite, lads_l, lblast_l, lbterm_l, la, ld, lready_l, lbe_l, fholda); input lclk; wire lclk; input lreset_l; wire lreset_l; input lwrite; wire lwrite; input lads_l; wire lads_l; input lblast_l; wire lblast_l; output lbterm_l; wire lbterm_l; inout [31:0] ld; wire [31:0] ld; input [23:2] la; wire [23:2] la; output lready_l; wire lready_l; input [3:0] lbe_l; wire [3:0] lbe_l; input fholda; wire fholda; wire rst; wire lblast_i; wire lads_i; wire lwrite_i; wire lready_o; wire lready_oe; wire lbterm_o; wire lbterm_oe; wire [23:2] la_i; wire [31:0] ld_o; wire [31:0] ld_i; wire ld_oe; wire [3:0] lbe_i; wire qlads; wire ds_xfer; wire ds_decode; wire ds_write; reg [23:2] la_q; reg [31:0] reg0; wire [31:0] reg0_rev; reg oe_reg0; reg [31:0] reg1; reg oe_reg1; // // Convert the inputs to active high. // assign rst = ~lreset_l; assign lblast_i = ~lblast_l; assign lads_i = ~lads_l; assign lwrite_i = lwrite; assign la_i = la; assign ld_i = ld; assign lbe_i = ~lbe_l; // // Generate a qualified version of 'lads_l', which is // asserted when the FPGA is addressed AND the FPGA is // not the local bus master. // assign qlads = lads_i && !la_i[23] && !fholda; // // Latch the local bus address on the 'lads_l' pulse. // always @ (posedge rst or posedge lclk) begin if (rst) begin la_q <= 0; end else begin if (lads_i) begin la_q <= la_i; end end end // // 'lbterm_l' should only be driven when the FPGA is addressed; otherwise // float, because the control logic on the card might also drive it. // assign lbterm_l = lbterm_oe ? ~lbterm_o : 1'bZ; // // 'lready_l' should only be driven when the FPGA is addressed; otherwise // float because the control logic on the card might also drive it. // assign lready_l = lready_oe ? ~lready_o : 1'bZ; // // Drive the local data bus on a read. // assign ld = ld_oe ? ld_o : 32'hZZZZZZZZ; // // If the current cycle is a write, update the registers // always @ (posedge rst or posedge lclk) begin if (rst) begin reg0 <= 0; reg1 <= 0; end else begin if (ds_xfer && ds_write) begin if (!la_q[2]) begin if (lbe_i[0]) begin reg0[7:0] <= ld_i[7:0]; end if (lbe_i[1]) begin reg0[15:8] <= ld_i[15:8]; end if (lbe_i[2]) begin reg0[23:16] <= ld_i[23:16]; end if (lbe_i[3]) begin reg0[31:24] <= ld_i[31:24]; end end else begin if (lbe_i[0]) begin reg1[7:0] <= ld_i[7:0]; end if (lbe_i[1]) begin reg1[15:8] <= ld_i[15:8]; end if (lbe_i[2]) begin reg1[23:16] <= ld_i[23:16]; end if (lbe_i[3]) begin reg1[31:24] <= ld_i[31:24]; end end end end end // // Generate the 'oe_reg*' signals, for enabling registers onto // the internal data bus. // always @ (posedge rst or posedge lclk) begin if (rst) begin oe_reg0 <= 1'b0; oe_reg1 <= 1'b0; end else begin if (ds_xfer && (lblast_i || lbterm_o)) begin oe_reg0 <= 1'b0; oe_reg1 <= 1'b0; end else begin if (ds_decode && !ds_write) begin oe_reg0 <= ~la_q[2]; oe_reg1 <= la_q[2]; end end end end // // Drive 'ld_o' with nibble reversed 'reg0' when register 0 is read, // and with 'reg1' when register 1 is read. // // This synthesises to an internal tristate bus, unless the // synthesis tool optimises it into a multiplexor. // assign reg0_rev = { reg0[3:0], reg0[7:4], reg0[11:8], reg0[15:12], reg0[19:16], reg0[23:20], reg0[27:24], reg0[31:28] }; assign ld_o = oe_reg0 ? reg0_rev : 32'hZZZZZZZZ; assign ld_o = oe_reg1 ? reg1 : 32'hZZZZZZZZ; // // Instantiate the direct slave state machine; monitors the local bus for // direct slave cycles and responds appropriately. // plxdssm plxdssm0( .clk (lclk), .rst (rst), .sr (1'b0), .qlads (qlads), .lblast (lblast_i), .lwrite (lwrite_i), .ld_oe (ld_oe), .lready (lready_o), .lready_oe (lready_oe), .lbterm (lbterm_o), .lbterm_oe (lbterm_oe), .transfer (ds_xfer), .decode (ds_decode), .write (ds_write), .ready (1'b1), .stop (1'b1)); endmodule собсна нужное действие с входом происходит вот тут assign reg0_rev = { reg0[3:0], reg0[7:4], reg0[11:8], reg0[15:12], reg0[19:16], reg0[23:20], reg0[27:24], reg0[31:28] }; т.е. шестнадцатиричные цифры переставляются в обратном порядке. А когда пытаюсь только в этом месте что-нибудь другое с входом сделать, например вот parameter oper1 = 32'b11111100000011110000111000110010; assign reg0_rev = $signed(reg0)*$signed(oper1); т.е. умножить на константу - система падает, когда приложение посылает карте первое же число. Умножать можно и просто на 2, результат тот же. Все функции вплоть до ADMXRC2_ConfigureFromFile выполняются успешно, все падает уже на этапе while (1) { scanf("%lx", &dataOut); fpgaSpace[0] = (DWORD) dataOut; dataIn = (unsigned long) fpgaSpace[0]; printf("Out = %8.8lx, In = %8.8lx\n", (unsigned long) dataOut, (unsigned long) dataIn); if (dataOut == 0x55AAU) { break; } } Win2003Server Собираю .bit в Xilinx ISE8.1+XST с .ucf из этого же примера. Для общения с карточкой использую ADM SDK4.6.0, С++ код приложения собираю в Visual Studio (также из примера, и не изменяю его вообще никак). Что может вызывать такую странную реакцию машины? Почему общение с картой происходит нормально вплоть до разводки, а первое же обращение уже не срабатывает?
-
вот тут вывод, если интересно, все без жульничества:) http://www.students.chemport.ru/materials/matan/m4/l3.pdf в итоге получится sqrt(2pi)/2
-
в bioinformatics нейросети на сегодня самая популярная технология распознавания и моделирования. Сайты связывания белков и ДНК, генные и регуляторные белковые сети, распознавания генов на геноме, вторичная структура белков, в общем все к чему рука биоинформатика сегодня может дотянуться. Популярность видимо объясняется тем, что существует уже множество готовых решений, тот же бедый Матлаб, а результаты получаются лучше чем могут дать многие другие существующие сегодня методы, как правило довольно примитивные, уровня линейных регрессий. Формальных постановок задачи действительно как правило нет, т.к. в биологии вообще с ними очень-очень плохо, и стандартная постановка - вот куча данных, вот для части из них правильные ответы, научитесь распознавать правильные ответы для всех. Никаких причинно-следственных механизмов мы не знаем и природы явлений не понимаем (а вот научитесь распознавать, уловите тенденции - придумаем), вот и получается что несчастная нейросеть затычка буквально в каждой дырке. Результаты например в моей бывшей задачке (распознавание сайтов гормонального ответа на ДНК) были вполне на уровне, false positive около 1:2к, false negative менее 2% (погрешность исходных данных всегда несколько процентов, так что что могли - выжали). Правда сейчас самые продвинутые перемещаются в support vector machines и разные kernel methods. Для них с готовыми решениями туговато, а точность замеченная получше. Например что касается ОЧЕНЬ проблемной задачи предсказания вторичной структруры белков, то разные ANN больше 70% точности не поднимались (и то с большииими извращениями, типа каскадов разных сетей, введения эволюционной инфы для взвешивания иходных данных и т.п.), а работа нашего завлаба по SVM (in press пока) обещает уже 78%.
-
Функция активации нейрона
MarSS ответил maxl тема в Языки проектирования на ПЛИС (FPGA)
если есть доступ к хорошей библиотеке, то вот любопытная книга http://www.springer.com/uk/home/generic/se...ingeronline.com про существование ее в электронном виде слышать не доводилось:( -
Always, assign, generate ...
MarSS ответил Bond тема в Языки проектирования на ПЛИС (FPGA)
ключевые слова: continuous assignment, blocking/non-blocking assignment, + из чего состоит модуль. Примеры в 2 и 3 - нам такое в лекции давали в качестве образца как делать не надо (список чувствительности не полон, поэтому при синтезе возможны всякие неожиданности) -
спасибо, увы, понятия не имею, есть ли доступ. Нашли (гуглом по слову jtag) тул universalScan, скачали-поставили, а он желает bsdl файл. На сайте Xilinx'а для семейства Virtex4 целая туча этих файлов, и чтобы выбрать какой-то надо уже знать тип девайса:( Или я не так понимаю что требуется сделать? слово jtag слышу первый раз в жизни, увы...
-
Вопрос по Verilog
MarSS ответил тема в Языки проектирования на ПЛИС (FPGA)
понимаю исключительно последний вопрос (не исходный), как насчет вот так? module iir_top(...); ... //parameters parameter s1_shiftgain = 3; // gains parameter s2_shiftgain = 2; parameter s3_shiftgain = 2; ... //<вызываем истансы нижнего модуля и дописывам к ним параметр> iir_second_order iir1 (...); defparam iir1.shiftgain = s1_shiftgain; iir_second_order iir2 (...); defparam iir2.shiftgain = s2_shiftgain; iir_second_order iir3 (...); defparam iir3.shiftgain = s3_shiftgain; endmodule module iir_second_order(...); ... parameter shiftgain = 3; ... endmodule параметр в нижнем модуле переопределяется при вызове его инстанса верхним модулем. -
Есть Windows 2003 Server и есть внутрях установленный в PCI слот девайс вида Virtex4. К машине доступ удаленный путем Remote Desktop. Девайс менеджер виндовый говорит на него Alpha Data -> ADM-XRC4LX. Однако даже webpack версия ISE знает таких девайсов несколько, например XC4VLX15, XC4VLX25 и т.д. Как узнать что именно у нас имеется? И вдогонку, плз скажите что такое Package: в том же Xilinx ISE при создании нового проекта требуется выбрать девайс, и далее package = {SF363, FF668, FF676}. Благодарю. Надеюсь что форум для чайников - это как раз место для подобных вопросов:)