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

Alexey2015

Новичок
  • Постов

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

  • Посещение

Репутация

0 Обычный

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

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

Информация

  • Город
    Array
  1. Подскажите пожалуйста, каким образом лучше эту задержку выполнить?
  2. Спасибо за совет. Используя ваши рекомендации, я написал программу для проверки правильности алгоритма транспонирования. В ней я ввожу исходную матрицу и транспонированную, затем ПЛИС выполняет операцию транспонирования и результат сравнивает с введенной мной транспонированной матрицей-если они равны (т.е. алгоритм верен), то загорается светодиод на отладочной плате. Quartus ее откомпилировал, но она не работает. Может у меня есть какие то ошибки или неточности в коде? Помогите пожалуйста разобраться. Привожу код программы: module matrix2 (C,a); input C; output a; integer i=0; integer j=0; integer k=0; wire #200 D=C; reg a=1'b0; reg [2:0] matrix [2:0]; reg [2:0] matrixt[2:0]; reg [2:0] result [2:0]; initial begin matrix [0][2:0] = 3'b110; matrix [1][2:0] = 3'b001; matrix [2][2:0] = 3'b101; result [0][2:0] = 3'b101; result [1][2:0] = 3'b100; result [2][2:0] = 3'b011; end always @ (posedge C) begin for(i=0; i<2; i=i+1) begin for(j=i; j<2; j=j+1) begin matrixt[j][i]<=matrix[i][j]; end end end always @ (posedge D) begin for(i=0; i<2; i=i+1) begin for(j=0; j<2; j=j+1) begin if (matrixt[i][j]==result[i][j])begin k=k+1; end end end if (k==9) begin a=1'b1; end end endmodule Чтобы второй блок always выполнялся последовательно за первым блоком, я поставил его чувствительным к сигналу D, задержанным на 200 нс по отношению к тактовому сигналу. Правильно я сделал? Есть ли какие то другие способы добиться того, чтобы блоки выполнялись последовательно?
  3. Здравствуйте. Передо мной стоит учебная задача написать программу транспонирования матрицы на Verilog. Я Verilog начал изучать совсем недавно и с вопросом о работе с массивами и матрицами еще не разобрался. Я написал код, но Quartus выдает ошибку, что массив matrix у меня объявлен неверно. Помогите пожалуйста разобраться в данной теме. Привожу пример части кода: integer i=0; integer j=0; reg [2:0] matrix [2:0]= {3'b110,3'b001,3'b101}; reg [2:0] matrixt[2:0]; always @ (posedge C) begin for(i=0; i<2; i=i+1) begin for(j=i; j<2; j=j+1) begin matrixt[j][i]<=matrix[i][j]; end end end
×
×
  • Создать...