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

igormihmih

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник
  1. FSM - это то, что через внешний тактовый сигнал работает? Так оно же сравнительно медленно получается, не более 200Мгц..
  2. Добрый вечер! Вот написал модуль для поиска значения, удовлетворяющего некую целевую функцию: module (output reg button) begin integer i; always @(posedge button) begin for(i=0;i<32'hFFFFFF;i=i+1) begin if(F(i)==5)/*какие-то действия*/;//F - некая функция end end Вот этот код синтезировался 5 часов и незасинтезировался. Подскажите, пожалуйста, что не так и как с этим бороться.
  3. У меня тоже, КАК ПРАВИЛО, не виснет :) Память? Выдавало аксес виолатион на какой-то экзешник, может заводская бага? Раньше такого не было, но и правильных проектов я раньше не запускал :)
  4. Вообщем в построуте таки и повесилось, но в постмапе начало выдавать правильные результаты. Большое спасибо за помощь!
  5. Ого, надо же, заработало, спасибо. Вот только моя встроенная логика сопротивляется осознавать такие шаманские ритуалы :) Заменил сумматор более навороченной функцией. Случайно поставил вместо "always(posedge clc or posedge reset)" - "always(posedge clc, posedge reset)" (думал, что одно и тоже). Опять в бихевереле норм, в построуте - бред. Вернул на место "always(posedge clc or posedge reset)". Поставил симулировать - винда зависла. Перегрузился, опять запустил симуляцию, опять зависла... :angry2:
  6. такой уже писал, он работал. Теперь хочу усложнить до более сложной функции (нпр, реализовать какой-нить помехоустойчивое кодирование) Так такой я тоже делал и он тоже работал. ...чем сейчас и занимаюсь :) Пересмотрел замечания по поводу дизайна. Переделал таким образом (не обращайте внимание, что сумматор в процедуре сделан - это для возможности дальнейшего расширения): `timescale 1ns / 1ps module mod( input [0:0] reset, input [0:0] clc, input [0:31] in, output reg[0:0] out ); reg[0:31] array[0:9]; reg[0:31] counter; reg[0:31] i; task summator; begin for(i=0;i<9;i=i+1)array[9]=array[9]^array[i]; array[0][0:0]=(^array[9]); end endtask always @(posedge clc or posedge reset) begin if(clc==1) begin if(counter>=10) begin summator(); out=(array[0][0:0]); end else begin array[counter]=in; counter=counter+1; end end if(reset==1)counter=0; end endmodule В результате, бихевирал симуляция прошла на ура, но вот Post-Map и Post-Route - на выходе, в переменной out заначение долгое время прыгало с 0 на 1 и обратно, а потом, после нескольких десятков наносекунд, устаканилось в правильный ответ (при чем не факт, что он попросту не угаданый системой моделирования). С чем это может выть связанно (там же, вроде, уже все синтезируется)?
  7. Привычка, взятая из С :laughing: Методом втыка понял, что ошибка в такокого рода конструкциях: array[0][0:0]=array[0][0:0]^array[0][1:1]; //типа x[n:m] = F( x[n:m] ) Странно, ведь "i = i + 1" - работает :cranky: Кстати, а где сказано, что нельзя? Вот, например, iverilog все съедает. Да и в Полякове такого не встречал...
  8. Здравствуйте! В качестве хелловорлда написал проектик-сумматор. Суть его в том, что на: 1) сигнал reset - зануляются счетчики. 2) сигнал clc - происходит заполнение 10-елементного массива интов извне. По окончанию заполнения считается ксор всех бит и выводится. Вот код: `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 15:02:32 01/04/2011 // Design Name: // Module Name: mod // Project Name: // Target Devices: // Tool versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module mod( input [0:0] reset, input [0:0] clc, input [0:31] in, output reg [0:0] out ); reg[0:31] array[0:9]; reg[0:31] counter; reg[0:31] i; task summator; // процедура суммирования begin for(i=1;i<10;i=i+1)array[0]=array[0]^array[i]; array[0][0:15]=array[0][0:15]^array[0][16:31]; array[0][0:7]=array[0][0:7]^array[0][8:15]; array[0][0:3]=array[0][0:3]^array[0][4:7]; array[0][0:1]=array[0][0:1]^array[0][2:3]; array[0][0:0]=array[0][0:0]^array[0][1:1]; end endtask always @(posedge reset) counter=0; //зануление счетчика массива always @(posedge clc) begin if(counter>=10) begin // суммирование, если елементы массива закончились summator(); out=array[0][0:0]; end else begin // заполнение массива в противном случае array[counter]=in; counter=counter+1; end end endmodule Ах да, среда разаработки ISE WebPack 12. Ошибка выдается: ERROR:Map:116 - The design is empty. No processing will be done. ERROR:Map:52 - Problem encountered processing RPMs. Посдкажите, пожалуйста, что я делал неправильно и что нужно переделать.
  9. Здравствуйте! Киньте ссылочку на сайты проектов свободных ядер, пожалуйста. Был на opencores.org, зарегался, вроде все хорошо, но под логином чего-то зайти никак не могу(( Заранее благодарен за помощь.
  10. Привет всем!:-) Поигрался с прошивкой плис в плате ml505, пищалки всякие, кнопочки и т.д. Тепер хочу чего-то повеселей. Обнаружил на плате изб-папу (и маму тоже) с юсб-контроллером. Слышал (но еще не сталкивался) о таких вещах, как ИП-ядра. Какое из моих рассуждений правильное: 1) При использовании ядер, отдельного контроллера не надо, юсб выводы припиновать к нужным выводам плиса и питаниям (возможно через промежуточные звенья для создания напряжений согласно стандарту). 2) Ядра предназначены для взаимодействия с контроллером юсб, а не разъемом. 3) Для управления юсб через контроллер ИП-ядра вообще не нужны, сравнительно несложно все сделать лапками. (извините за ламмерское изложение :-] )
  11. Хорошо. Значит ли это, что вместо reset можно использовать: initial out=0; ? clc - tff будет работать по переднему, это задано через @ (posedge clc)? А это разве синтезируемая конструкция? И тот же вопрос: @(posedge clk), насколько я понял из Полякова не синтезируется. Разве не так?
  12. Да, красиво:) Но все же не все мне очевидно. 1) А кто такой reset и как от соотносится с clc? 2) Как будет во всем этом участвовать clc после синтеза? 2) И последнее, будет ли работать правильно какой-то из моих примеров? Спасибо, masics, за соучастие:)
  13. Здравствуйте! Хочу уточнить некоторые моменты, тонкости которых пока не очень осознал. Стоит, к примеру, задача: дат тактовый сигнал clc и выхдной out. Нужно на выходе выпускать сигнал с частотой в 2 раза ниже (модельный пример, в реальной жизни может быть сложнее, сирену организовать какую или еще что). Вопрос: Мне хватит написать так input clc; output out; reg out; reg h=0; always @(clc) begin if(clc==1)h=h^1; out=h; end или нужно вот так input clc; output out; reg out; reg h=0; reg b; always @(clc) if(b!=clc) //физическое отслеживание смены тактового сигнала begin b=clc; if(clc==1)h=h^1; out=h; end или еще как-то иначе нужно? т.е. понятно, что @(clc) - несинтесируемая конструкция, необходимая лишь для моделирования. Но как на практике нужно (грамотно, по возможности) задавать события для выполнения блока always. Заранее благодарен за помощь и заранее извиняюсь за туманность изложения:)
  14. Ну не совсем, рассматриваем конкретную систему, значит тема вроде та. Но если товарищи модераторы посчитают нужным, то так и будет:)
×
×
  • Создать...