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

MarSS

Участник*
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о MarSS

  • День рождения 25.07.1982

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. не понимаю что происходит с картой - она перегружает машину при обращении. Осваиваю 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 (также из примера, и не изменяю его вообще никак). Что может вызывать такую странную реакцию машины? Почему общение с картой происходит нормально вплоть до разводки, а первое же обращение уже не срабатывает?
  2. вот тут вывод, если интересно, все без жульничества:) http://www.students.chemport.ru/materials/matan/m4/l3.pdf в итоге получится sqrt(2pi)/2
  3. в bioinformatics нейросети на сегодня самая популярная технология распознавания и моделирования. Сайты связывания белков и ДНК, генные и регуляторные белковые сети, распознавания генов на геноме, вторичная структура белков, в общем все к чему рука биоинформатика сегодня может дотянуться. Популярность видимо объясняется тем, что существует уже множество готовых решений, тот же бедый Матлаб, а результаты получаются лучше чем могут дать многие другие существующие сегодня методы, как правило довольно примитивные, уровня линейных регрессий. Формальных постановок задачи действительно как правило нет, т.к. в биологии вообще с ними очень-очень плохо, и стандартная постановка - вот куча данных, вот для части из них правильные ответы, научитесь распознавать правильные ответы для всех. Никаких причинно-следственных механизмов мы не знаем и природы явлений не понимаем (а вот научитесь распознавать, уловите тенденции - придумаем), вот и получается что несчастная нейросеть затычка буквально в каждой дырке. Результаты например в моей бывшей задачке (распознавание сайтов гормонального ответа на ДНК) были вполне на уровне, false positive около 1:2к, false negative менее 2% (погрешность исходных данных всегда несколько процентов, так что что могли - выжали). Правда сейчас самые продвинутые перемещаются в support vector machines и разные kernel methods. Для них с готовыми решениями туговато, а точность замеченная получше. Например что касается ОЧЕНЬ проблемной задачи предсказания вторичной структруры белков, то разные ANN больше 70% точности не поднимались (и то с большииими извращениями, типа каскадов разных сетей, введения эволюционной инфы для взвешивания иходных данных и т.п.), а работа нашего завлаба по SVM (in press пока) обещает уже 78%.
  4. если есть доступ к хорошей библиотеке, то вот любопытная книга http://www.springer.com/uk/home/generic/se...ingeronline.com про существование ее в электронном виде слышать не доводилось:(
  5. ключевые слова: continuous assignment, blocking/non-blocking assignment, + из чего состоит модуль. Примеры в 2 и 3 - нам такое в лекции давали в качестве образца как делать не надо (список чувствительности не полон, поэтому при синтезе возможны всякие неожиданности)
  6. спасибо, увы, понятия не имею, есть ли доступ. Нашли (гуглом по слову jtag) тул universalScan, скачали-поставили, а он желает bsdl файл. На сайте Xilinx'а для семейства Virtex4 целая туча этих файлов, и чтобы выбрать какой-то надо уже знать тип девайса:( Или я не так понимаю что требуется сделать? слово jtag слышу первый раз в жизни, увы...
  7. понимаю исключительно последний вопрос (не исходный), как насчет вот так? 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 параметр в нижнем модуле переопределяется при вызове его инстанса верхним модулем.
  8. Есть Windows 2003 Server и есть внутрях установленный в PCI слот девайс вида Virtex4. К машине доступ удаленный путем Remote Desktop. Девайс менеджер виндовый говорит на него Alpha Data -> ADM-XRC4LX. Однако даже webpack версия ISE знает таких девайсов несколько, например XC4VLX15, XC4VLX25 и т.д. Как узнать что именно у нас имеется? И вдогонку, плз скажите что такое Package: в том же Xilinx ISE при создании нового проекта требуется выбрать девайс, и далее package = {SF363, FF668, FF676}. Благодарю. Надеюсь что форум для чайников - это как раз место для подобных вопросов:)
×
×
  • Создать...