Jump to content

    

the_king_orange_summer

Участник
  • Content Count

    69
  • Joined

  • Last visited

Everything posted by the_king_orange_summer


  1. поделитесь заветными битиками на 13.1.4, пожалуйста :rolleyes:
  2. С временным ограничением решил. Спасибо Все равно ниос хардвейр не видит соединения с юзерборд где-то что-то не так делаю. Буду дальше копать что не так
  3. присоединяюсь к вопросу. делаю простой проектик на циклон4е. В Qsys использую NIOSIIProc, On-Chip Memory, Jtag UART, PIO, System ID Peripheral. Пользуюсь QuartisII 13.0. генерится time_limited.sof - и всё. может как вылечить можно? Шьюсь time_limited.sof, висит окно OpenCore Plus Status поверх окна программирования. далее, при запуске через NIOS II Hardware вылазит сообщение, что соединений не обнаружено или не залит sof.Причиной этого является time_limited?
  4. Плюсую. С MAX7000 не связывайтесь. Старье. Не самые лучшие впечатления от работы с этой серией.
  5. воооо. вроде ясно. проблема решилась после установки фильтров по входам. как я понял, по входу ловилась метастабильность в случайный момент времени, т.к. входной сигнал никак не синхронизирован с улицы. Куда уходил в этой ситуации автомат - неизвестно. 2+ последовательных триггеров эту проблему решили
  6. вмешаюсь немного. а вот если его застробить частотой - тут разве будет корректно работать и не может получиться метастабильности на этом триггере?
  7. к сожалению, проблема наблюдается вновь. причем, не только с этим модулем проекта. с временным анализом непонятно ровным счетом ничего тогда мне :krapula:
  8. favalli, можешь попробовать забежать на кафедру №2. может чем смогут помочь. там же лабы вводились, железо вналичии было. правда, я под это дело уже не попал. а когда заглядывал, на глаза только макс2 попадались. но мало ли. Как это ни странно, но выходит, что на кафедре автоматики плисов больше, чем на электронике)
  9. чего вы человека давите) правильно вы описали в файлах иерархией выше ничего больше дополнительного с этим сигналом делать не надо. выводите на пин - и все дела. правильно ли всё организовано для ОБЩЕЙ задачи (о чем начали говорить все выше) - этого-то вопроса тс не задавал)
  10. Доброго времени суток! Необходимо проводелировать проект. В проекте присутствует прием по последовательному интерфейсу, описание которого будет занимать достаточное много строк. Так и просится использовать для этих целей task. При моделировании в тестбенче пишу строки /*выше созданы переменные, проведена инициализация*/ //создаю задачу передачи данных по последовательному интерфейсу task UART; output reg in; reg [14:0] IN_DATA; integer i, j; begin for (j=0; j < 8; j = j + 1) begin #1 IN_DATA [11:0] = $random; #1 IN_DATA [14:12] = j; #10 in = 1; #32 in = 0; #96 in = 1; #64 in = 0; for (i=0; i < 15; i = i + 1) begin #32 in = 1; #32 in = IN_DATA[14-i]; #64 in = 0; end #32 in = 0; #5500 in = 0; end #1500000; end endtask //генерация сигналов always begin Wait_Clk (10); UART(IN[7]); end /*далее, описание соединений*/ Провожу моделирование и вижу, что сама задача UART работает (регистр in меняет свои значения в нужные моменты), а вот в регистр IN[7] эти данные не подгружаются. В чем проблема? что я пишу не так? Заранее благодарю
  11. Поставил преобразователь уровней (SN74LVC от TI) - пока проблема не наблюдалась больше.
  12. Тк SCLK - это, конечно, клок для АЦП. Но частота-то мала. 1 МГц. При этом смена данных от АЦП на шине DOUT происходит по СРЕЗУ SCLK, а я их забираю по фронту SCLK. Так что тут должно быть всё гладко в любом случае. Есть такое дело) тут я немного "схалявил" :rolleyes: Но проблем с этим глитчем нет. Осц ее не показывает даже. Бесспорно, тут поправить необходимо. Но описанная проблема вряд ли из-за этого. SDC and TimeQuest API Reference Manual от Altera ничего об этой команде не слышал) порою и в этом направлении. СПАСИБО!
  13. Имеет место быть, но проблема, по всей видимости, не в этом: если б пробиралась помеха по входу - автомат "шел" бы дальше, а он останавливается.
  14. Вот мой SDC-файлик. derive_clock_uncertainty create_clock -period 8MHz -name {clk} [get_ports {clk}] create_generated_clock -name {clk_div_8} -divide_by 8 -source [get_ports {clk}] [get_registers {cnt[2]}] set_clock_groups -exclusive -group {clk} set_clock_groups -exclusive -group {clk_div_8} Собсно, в нем задан клок, задан деленный клок.Весь проект синхронный, по фронтам. Разве еще что-то нужно накручивать для таймквеста, чтобы всё было хорошо? если да, то можете хоть намекнуть, что это) курил статьи товарища des00. Там, вроде, ничего такого не говорилось. Заранее, благодарю. Вы имеете ввиду временнОе моделирование? К сожалению, никак не могу подружить квартус12 и моделсим в плане симуляции на gate-уровне.. А разве он покажет что-то нехорошее, если таймквет говорит, что всё окнорм? По возможности буду копать в этом направлении. Спасибо! Тож есть вероятность. Пока руки до этого варианта не дошли. А у вас была подобная ситуация? Тут не оч понятно, зачем. В данном варианте на функциональной симуляции хоть задержки видно, так сказать, для понимания что по какому клоку произошло. Не очень понятно, что вы имеете ввиду? Что куда прописать в конфигурации? Приходит на ум лишь фильтр на основе счетчика, опять же. Вы это имеете ввиду? Заранее благодарю за ответ
  15. Обычный щуп от осциллографа. Ползунок делителя на х10. Генератор частоты для ПЛИС стоит на 8 МГц. Частота работы представленного модуля 1 МГц. Для ТаймКвеста данная информация пишется в sdc-файлик, анализ времянки проходит без каких либо возражений. Спасибо! Посмотрел. С DOUT-ом понятно. А остальные сигналы по клоку меняются - вроде же всё хорошо должно быть. Разве нет? Выводил на свободные ножки состояния автомата+счетчик WDT. И при этом "зависаний" не наблюдалось. Аналогично, когда я включил PCI по входному сигналу DOUT (который вообще за микросхемой преобразования в 3.3В), "зависать" стало реже. Такое чувство, что какая-то злая помеха пробирается внутрь ПЛИС
  16. Всем доброго времени суток. Прошу помощи в решении следующей проблемы. Тереюсь в догадках. Исходные данные: Имеется схемка с восемью АЦП+ПЛИС. АЦП (MAX1241) - 5ти вольновое питание, для сигнала "1" (Vih) минимальный уровень 3V. ПЛИС: EPM1270T144 от Altera. Для обмена между данными микросхемами собрана прикрепленная схемка (На схемке: D5 - ПЛИС; SCLK, CS - клок и чип-селект для АЦП-шек, соответствиенно; DOUT - сигнал данных с АЦП; микросхема D4 - преобразование уровня сигнала с 5В на 3.3В; R4-R12 - 330 Ом). SCLK, CS - выходы с open drain и clamp-диодом (PCI). DOUT, на всякий случай, тоже как PCI с защитным диодом. Схемка была собрана на основании документа Using MAX II Devices in Multi-Voltage Systems В ПЛИС зашит конечный авотмат. Код прилагаю `timescale 1ns/1ns module ADC_send ( input clk, input reset, input DOUT, input [7:0] data_send, //flag data_send output wire [11:0] DATA_w [7:0], output wire SCLK_w, output wire [7:0] nCS_w, output wire [7:0] new_data, output wire [7:0] GOOD_ADC_w/*ADDED*/, output wire [1:0] state_w, output wire [3:0] N_w ); parameter DELAY=1; reg [7:0] new_data_r; //flag new_data reg [3:0] N; //bit pointer reg [2:0] S; //adress reg [1:0] state; //state-machine reg [7:0] nCS; //CS_ADC reg [11:0] DATA [7:0]; //data_out reg SCLK_en; //enable CLK_ADC reg [3:0] WDT; //Watchdog Timer (7.5 us ADC MAX1241) Tclk* reg [7:0] GOOD_ADC; //ADC condition parameter S0 = 0, S1 = 1, S2 = 2, S3 = 3; //ADDED assign state_w = state; assign N_w = N; // // Output depends only on the state always @ (posedge clk or negedge reset) begin if (!reset) begin DATA[0][11:0] <= #DELAY 0; DATA[1][11:0] <= #DELAY 0; DATA[2][11:0] <= #DELAY 0; DATA[3][11:0] <= #DELAY 0; DATA[4][11:0] <= #DELAY 0; DATA[5][11:0] <= #DELAY 0; DATA[6][11:0] <= #DELAY 0; DATA[7][11:0] <= #DELAY 0; S <= #DELAY 3'd0; N <= #DELAY 4'd0; nCS <= #DELAY 8'hFF; // new_data_r <= #DELAY 7'd0; end else begin case (state) S0: //start begin N <= #DELAY 4'd0; nCS <= #DELAY 8'hFF; //>=220 ns for MAX1241 end S1: //nCS begin //nCS [s] <= #DELAY 1'd0; nCS [s] <= #DELAY 1'd0; end S3: //WR data begin N <= #DELAY N + 4'd1; //ukazatel' byte if (WDT >= 4'h8) begin S <= #DELAY S + 3'd1; end else if (N <= 12) begin DATA [s][11-N] <= #DELAY DOUT; end else if (N == 13/*14*/) begin //end new_data_r [s] <= #DELAY 1; end else if (N == 14/*15*/) begin //end S <= #DELAY S + 3'd1; end end endcase end if (!reset) new_data_r[0] <= #DELAY 0; else if (data_send[0]) new_data_r[0] <= #DELAY 0; if (!reset) new_data_r[1] <= #DELAY 0; else if (data_send[1]) new_data_r[1] <= #DELAY 0; if (!reset) new_data_r[2] <= #DELAY 0; else if (data_send[2]) new_data_r[2] <= #DELAY 0; if (!reset) new_data_r[3] <= #DELAY 0; else if (data_send[3]) new_data_r[3] <= #DELAY 0; if (!reset) new_data_r[4] <= #DELAY 0; else if (data_send[4]) new_data_r[4] <= #DELAY 0; if (!reset) new_data_r[5] <= #DELAY 0; else if (data_send[5]) new_data_r[5] <= #DELAY 0; if (!reset) new_data_r[6] <= #DELAY 0; else if (data_send[6]) new_data_r[6] <= #DELAY 0; if (!reset) new_data_r[7] <= #DELAY 0; else if (data_send[7]) new_data_r[7] <= #DELAY 0; end // Determine the next state always @ (posedge clk or negedge reset) begin if (!reset) begin state <= #DELAY S0; SCLK_en <= #DELAY 1'd0; GOOD_ADC <= #DELAY 8'hFF; end else case (state) S0: begin state <= #DELAY S1; SCLK_en <= #DELAY 1'd0; end S1: begin state <= #DELAY S2; SCLK_en <= #DELAY 1'd0; WDT <= #DELAY 4'h0; end S2: begin if (DOUT) begin //sCLK ADC, response waiting state <= #DELAY S3; //next SCLK_en <= #DELAY 1'd1; GOOD_ADC[s] <= #DELAY 1'h1; end else if (WDT < 4'h8) begin //response waiting state <= #DELAY S2; SCLK_en <= #DELAY 1'd0; WDT <= #DELAY WDT + 4'h1; end else if (WDT >= 4'h8) begin state <= #DELAY S3; GOOD_ADC[s] <= #DELAY 1'h0; end end S3: begin //else if (N != 15) //write data //else if (N < 15) //write data if (N < 14) //write data state <= #DELAY S3; //else if (N == 15) //else if (N >= 15) else if (N >= 14) state <= #DELAY S0; end endcase end assign GOOD_ADC_w = GOOD_ADC; assign SCLK_w = SCLK_en ? clk : 1'd0; assign DATA_w = DATA; assign nCS_w = nCS; assign new_data = new_data_r; endmodule Суть: интерфейс типа SPI. Реализован последовательный опрос всех АЦП. Если АЦП не отвечает за определенное - ситуация фиксируется, опрос продолжается далее. Состояний, в которых автомат может "зависнуть", не вижу :cranky: СУТЬ ПРОБЛЕМЫ Подключаюсь щупом осциллографа к точкам "SCLK_ADC", "DOUT_ADC" - опрос прекращается. Такое чувство, что схема "зависает". Прошу помощи. Может у кого было что-то похожее? Или есть соображения, почему такое может происходить? И вообще, что же это такое происходит с ПЛИС? Куда копать? Теряюсь в догадках..
  17. если под тактовой задержкой вы имели ввиду период тактовой частоты, то неправильно. скорее всего в первых строках кода написана строка `timescale 1us/1ns где параметры 1мкс - шаг, а 1нс - точность. что означает, что перед присваиванием будет сделана пауза в 1 мкс.
  18. а что, MAX7000 не поддерживается в 12шке? что-то не нашел соответствующие пункты библиотеки при установке. да и на альтера.ком написано для веб эдишн поддержка MAX® series devices: All, и для сабскрипшн эдишн MAX series devices: All. непонятно. может кто-нибудь пояснить? заранее, спасибо
  19. большой спасибо за такой развернутый ответ! вобщем-то, делаю всё аналогично. пока взял паузу с этим вопросом
  20. bogaev_roman, а можно пример vo-файла? Дописываю в файл .vo строку initial $sdf_annotate("D:/ххх/ххх/ххх/Project/simulation/modelsim/MAIN_v.sdo"); И запуская моделирование - ничего не меняется :( К слову, изначально в vo-файле такой строки нет.
  21. Начал осваивать связку QII+ModelSim. Про советы работать только в ModelSim, а QII использовать для временного анализа и присвоения пинов слышал. В рамках этой темы рассматривать этот вопрос не нужно. Хочу провести временнОе моделирование проекта в моделсиме (в учебных целях, ради интереса. Про временной анализ вкурсе). Читал хендбук от альтеры, попутно материалы вот с этого сайта. В приложенной мной к этому сообщению страничке представлен скрипт запуска симуляции проекта на Gate-уровне. С этой частью всё понятно и работает. А вот дальше идет речь о запуске симуляции с учетом временных задержек. Проект у меня на верилоге. В файле представлен пример прикручивания файла с временнЫми задержками .sdo для моделирования hdl-проекта. А как будет выглядеть команда для запуска моделирования с временнЫми задержками для проекта на верилоге? Непонятно, что означают и каких действий требуют вот эти строки Хорошо бы увидеть примерчик Заранее, благодарен Gate_Level_Timing_simulation.pdf
  22. Приветствую всех Делаю проект на верилоге. Головной модуль имеет в качестве одного из портов двумерный массив input [13:0] DATA [7:0]; В соответствующей части тестбенча я пишу ... reg [13:0] DATA [7:0]; ... .DATA(DATA), ... RTL-моделирование проходит без проблем. А вот при моделировании на Gate-уровне моделсим выдает ошибку (типа, сигнал DATA_0_7 не имеет источника). Оно и понятно из следующего: в процессе компиляции EDA Netlist Writer переименовывает линии, информируя об этом Info (204001): Port "DATA[0][13]" is changed into "DATA_0_13" because it's a member of 2-D array port "DATA" В файле .vo уже нет сигналов [13:0] DATA [7:0], они заменены на сигналы с другим именем (типа DATA_0_13, например). Вопрос в следующем: как грамотно в тестбенче соединить двумерный массив с таким образом переименованными входными портами головного модуля проекта? Неужели нужно ручками прописать каждую связь? Вряд ли же. Это у меня в проекте 112 таких сигналов,а ведь наверняка есть более "тяжелые" проекты. Как выкручиваться? Подскажите Использую QII12sp1+Altera-ModelSim Заранее благодарен Почитал схожие темы, сразу отвечу к чему это: хочу провести временное моделирование. Про таймквест и временной анализ знаю.