Jump to content
    

DukeXar

Свой
  • Posts

    50
  • Joined

  • Last visited

Reputation

0 Обычный

About DukeXar

  • Rank
    Участник
    Участник
  • Birthday 05/01/1985

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. А молодежь еще не доросла :07: ей надо учиться, учиться, и, еще раз, у...читься!
  2. Простите за :bb-offtopic: , но это слишком высокая зарплата или малы знания? Можно ответить в личку.
  3. Е=010 М=0,0001… Сдвигаем: 001 0,001xx Все, дальше некуда -> генерируем исключение 100 0,0001xx 011 0,001xx0 010 0,01xx00 001 0,1xx000 Дальше опять некуда -> исключение Такие числа, как в последнем примере входят в область, которые нельзя представить нормализованными числами в данной сетке. Погрешность. http://en.wikipedia.org/wiki/IEEE_754 и IA-32 Intel Architecture Software Developer's Manual. Volume 1: Basic Architecture.
  4. Если порядок (E) смещенный, т.е. принимает только положительные значения, то его нулевое значение - минимальное значение, поэтому вполне возможно для использования. Т.е. порядок никак не влияет на то, является ли число нормализованным или денормализованным. Вот если он равен 0, а мантисса все еще не нормализованна, т.е. ее необходимо сдвинуть еще один раз влево (или несколько раз), то порядок уже некуда уменьшать, в результате получится переполнение (не помню как оно правильно называется, underflow), и результат получится равным 0. Вы просто не можете представить такое число в используемой разрядной сетке.
  5. Сам пользуюсь этим комплектом. Плата - чудо, особенно после TrexC1 с ep1c6. :) В CII_Starter_NIOS нет упомянутого файла, видимо, забыли положить. Сам процессор находится в cpu_0.v и зашифрован (насколько помню там по лицензии можно использовать сколько угодно времени при наличии подключения по JTAG или в течение 1 часа - потом процессор отключается). Различий в версиях квартуса нет. Я ставил 6.1 и все нормально. Чтобы проц работал дольше - надо его пересобрать в SOPC Builder с соответствующей лицензией (например, на генерацию plaintext NIOS II) - будут сгенерены заново cpu_0.v и все остальные файлы компонентов системы - после этого уже выполняйте синтез. Нормально синтезируется и (вроде) работает пример CII_Starter_SD_Card_Audio (я на нем dhrystone гонял), а вот что демонстрирует сам пример - не разбирался. Еще посмотрите CycloneII_Starter_Kit-v1.0.0\Examples\CII_Starter_tutorials\
  6. Мдя... на Edge цена укусилась. :blink: Тоже, кстати, RCP-based (Eclipse). А каким образом она подключается к целевой платформе? Com-порт или что-то еще? А про codelab ничего не нагуглил :(
  7. Как думал проверить работоспособность Avalon Slave устройства: 1) Заливаю прошивку в FPGA по JTAG 2) Запускаю отладчик из-под Eclipse 3) Смотрю по Signal Tap II сигнальчики И тут пришли они - грабли! Надо сначала отключить терминал, а, соответственно, и отладчик gdb, чтобы иметь возможность пользоваться Signal Tap II. Или я что-то не так делаю? :maniac:
  8. Вы меня прямо огорчили, у меня как-раз Cyclone II. А что еще существует для синтеза SystemVerilog и как обстоят дела с этим в квартусе 7? На сайте альтеры никаких толковых упоминаний... как всегда: initial support.
  9. =) Вот, я как раз хотел узнать, в чем же еще можно синтезировать на СВ. Я не противник СВ, даже наоборот, просто сейчас не могу его использовать, кроме как для моделирования. ;-)
  10. Понял... смотреть quartus_unix.pdf =) А проблема была во включенном SCIM (SKIM). После отключения падений не замечаю... равно как и японский текст вводить тоже не могу.
  11. Продолжаем эпопею с интерфейсами. module EngineControllerOutput (EngineControllerOutput_if.def ecif); bit [2:0] state; bit [1:0] chop; // строка 81 bit [3:0] phases; assign ecif.inhibit_n = { chop[1] & (phases[3] | phases[2]), chop[0] & (phases[1] | phases[0]) }; always @(posedge ecif.chclk or posedge ecif.sens[0]) begin if (ecif.sens[0]) chop[0] <= 0; else chop[0] <= 1; end always @(posedge ecif.sens[1]) begin if (ecif.sens[1]) // строка 96 chop[1] <= 0; //else // chop[1] <= 1; end assign ecif.phases = phases; Квартус говорит: Warning (10235): Verilog HDL Always Construct warning at EngineControllerOutput.sv(96): variable "ecif" is read inside the Always Construct but isn't in the Always Construct's Event Control Warning (10030): Net "chop[1]" at EngineControllerOutput.sv(81) has no driver or initial value, using a default initial value 0 Warning (10030): Net "chop[0]" at EngineControllerOutput.sv(81) has no driver or initial value, using a default initial value 0 :cranky: Как быть? Похоже, я выкину СВ и вернусь обратно на верилог.
  12. Потому что без спецификатора квартус говорит, следующее: module EngineController_AvalonSlave_Full #(parameter MSB = 31) (input bit i_Clk, input bit i_Reset_n, input bit i_Clk2, input bit i_ChClk, input bit i_ChipSelect, input bit [1:0] i_Address, input bit i_Write, input bit [MSB:0] i_WriteData, input bit i_Read, input bit i_LeftLimit, input bit i_RightLimit, input bit [1:0] i_Sens, output bit [MSB:0] o_ReadData, output bit o_Irq, output bit [3:0] o_Phases, output bit [1:0] o_Inhibit_n ); wire o_Clk; wire o_Reset; wire o_Half; wire o_CW; EngineControllerOutput_if ecif (o_Clk); EngineController_AvalonSlave #(.MSB(MSB)) avslv1 (i_Clk, i_Reset_n, i_Clk2, i_ChipSelect, i_Address, i_Write, i_WriteData, i_Read, i_LeftLimit, i_RightLimit, o_ReadData, o_Irq, o_Clk, o_Reset, o_Half, o_CW); EngineControllerOutput eng1 (ecif.def); assign o_Phases = ecif.phases; assign o_Inhibit_n = ecif.inhibit_n; assign ecif.chclk = i_ChClk; assign ecif.sens = i_Sens; assign ecif.reset = o_Reset; assign ecif.direction = o_CW; assign ecif.halfstep = o_Half; endmodule // EngineController_AvalonSlave_Full Warning (10030): Net "ecif.test.chclk" at EngineControllerFull.sv(52) has no driver or initial value, using a default initial value 0 и еще про reset, direction, halfstep, sens[0], sens[1] Все решилось явным указанием модпорта: assign o_Phases = ecif.test.phases; assign o_Inhibit_n = ecif.test.inhibit_n; assign ecif.test.chclk = i_ChClk; assign ecif.test.sens = i_Sens; assign ecif.test.reset = o_Reset; assign ecif.test.direction = o_CW; assign ecif.test.halfstep = o_Half; И если в ситуации с assign это еще понятно, то зачем указывать модпорт при связывании интерфейса и модуля, использующего этот интерфейс - непонятно. Похоже, квартус просто не смотрит на спецификацию модуля и его порты. :angry2: Вывод: При этом спецификация тоже получается дурная: ведь модпорт test предполагает входы для phases и inhibit_n и выходы для остальных, значит, в теории, в assign должно указываться ecif.def, а не ecif.test. Результат, полученный для ecif.test в WithExplicitModportSpecification.png. Для assign ecif.def.chclk = i_ChClk; получаем Error (10231): Verilog HDL error at EngineControllerFull.sv(67): value cannot be assigned to input "chclk"...... :maniac:
  13. Может, вопрос не в тему, но чем пользоваться для синтеза? Пытаюсь синтезировать конструкцию в Quartus II 6.1: interface EngineControllerOutput_if (input logic clk); logic chclk; logic reset; logic direction; logic halfstep; logic [1:0] sens; // 3 2 1 0 // A B C D logic [3:0] phases; logic [1:0] inhibit_n; modport def( input clk, chclk, reset, direction, halfstep, sens, output phases, inhibit_n ); modport test ( output chclk, reset, direction, halfstep, sens, input clk, phases, inhibit_n ); endinterface module EngineControllerOutput (EngineControllerOutput_if.def ecif); // бла-бла endmodule module EngineController_AvalonSlave_Full #( parameter MSB = 31 ) ( input bit i_Clk, input bit i_Reset_n, input bit i_Clk2, input bit i_ChClk, input bit i_ChipSelect, input bit [1:0] i_Address, input bit i_Write, input bit [MSB:0] i_WriteData, input bit i_Read, input bit i_LeftLimit, input bit i_RightLimit, input bit [1:0] i_Sens, output bit [MSB:0] o_ReadData, output bit o_Irq, output bit [3:0] o_Phases, output bit [1:0] o_Inhibit_n ); bit o_Clk; bit o_Reset; bit o_Half; bit o_CW; EngineControllerOutput_if ecif (o_Clk); EngineControllerOutput eng1 (ecif); // вот здесь выдает: Error (10828): SystemVerilog error at EngineControllerFull.v(35): expression has 10 elements; expected EngineController_AvalonSlave #(.MSB(MSB)) avslv1 (i_Clk, i_Reset_n, i_Clk2, i_ChipSelect, i_Address, i_Write, i_WriteData, i_Read, i_LeftLimit, i_RightLimit, o_ReadData, o_Irq, o_Clk, o_Reset, o_Half, o_CW); assign o_Phases = ecif.phases; assign o_Inhibit_n = ecif.inhibit_n; assign ecif.test.chclk = i_ChClk; assign ecif.test.sens = i_Sens; assign ecif.test.reset = o_Reset; assign ecif.test.direction = o_CW; assign ecif.test.halfstep = o_Half; endmodule // EngineController_AvalonSlave_Full Если там поставить ecif.def, то варнинг исчезает, но появляется сообщение про несколько источников сигнала на одном входе. Если в assign ниже добавить test (как в исходнике) - то собирается, однако при просмотре в RTL Viewer видим какую-то чушь: блок ecif интерфейса, у него есть входы ecif.test, выходы ecif.def и двунаправленные выходы ecif.... бред. Я не пойму как писать. В ModelSim компилируется без проблем. :angry2:
  14. Извиняюсь, запостил сначала сюда, а потом сделал топик http://electronix.ru/forum/index.php?showtopic=29609
×
×
  • Create New...