Hankot3 0 4 июня, 2015 Опубликовано 4 июня, 2015 · Жалоба Как подключать Блоки IP к проектам( в коде ) и к друг другу (например IP core к друг другу( FFT к Complex Multipler)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 4 июня, 2015 Опубликовано 4 июня, 2015 · Жалоба к IP коре обычно еще идет шаблон подключения на VHDL и Verilog. Оттуда копируете, и назначете сигналы. в ксалинксе выбрать IPCore в окне файлов проекта, внизу COREGenerator открыть внизу HDLTeamplate Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hankot3 0 4 июня, 2015 Опубликовано 4 июня, 2015 · Жалоба еще один вопрос. как заполнить м- последовательностью ПЗУ ПЛИС. ? ну тоесть я могу в регистр залить последовательность так что бы потом она там всегда была ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
egorman44 0 4 июня, 2015 Опубликовано 4 июня, 2015 · Жалоба еще один вопрос. как заполнить м- последовательностью ПЗУ ПЛИС. ? ну тоесть я могу в регистр залить последовательность так что бы потом она там всегда была ? Можно инициализировать регистр в initial блоке reg[3:0] rom [0:7]; initial begin rom[0] = 4'b1011; rom[1] = 4'b0001; rom[2] = 4'b0011; rom[3] = 4'b0010; rom[4] = 4'b1110; rom[5] = 4'b0111; rom[6] = 4'b0101; rom[7] = 4'b0100; end UPD: ну только если в дальнейшем вы обязуетесь нигде не присваивать новых значений двумерному массиву rom :) UPD2: да и в правду чего жадничать , есть такой документ под названием 1364.1 IEEE Standard for Verilog ® Register Transfer Level Synthesis там в параграфе 5.6 Modeling read-only memories (ROM) собственно можно посмотреть примеры моделирования ROM памяти при помощи Verilog Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Swup 0 4 июня, 2015 Опубликовано 4 июня, 2015 · Жалоба Вы ведь уже используете ip cores? Вот и поставьте память готовую. Она инициализируется файлом текстовым. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_su 1 4 июня, 2015 Опубликовано 4 июня, 2015 · Жалоба Добрый день. В дополнение к комментарию Swup. При создании ip ROM укажите, что будете использовать файл инициализации. Пример файла packets_block_mem_b.coe packets_block_mem_b.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hankot3 0 5 июня, 2015 Опубликовано 5 июня, 2015 · Жалоба Спасибо! вот тут еще один вопрос по коду пытаюсь сделать регистр сдвига вот таким образом. а где касячу не пойму (( картинки прилагаются https://psv4.vk.me/c612920/u18277687/docs/7...VKSDVVGRJmjKd15 https://psv4.vk.me/c612920/u18277687/docs/8...KMAxHaO8yIuwc8I Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Swup 0 5 июня, 2015 Опубликовано 5 июня, 2015 · Жалоба У вас входные и выходные слова 10 битные, а при этом сдвиговый регистр - массив однобитных слов. Вам нужно reg [9:0] shift [N-1;0] ( да, в основном принято младшие разряды держать справа) Во вторых. Не особо понятно зачем усложнять все generate если можно просто сделать в цикле в always. В третьих. Вы уверены, что при сбросе хотите занулить только первое слово, а не весь регистр? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hankot3 0 5 июня, 2015 Опубликовано 5 июня, 2015 · Жалоба В третьих. Вы уверены, что при сбросе хотите занулить только первое слово, а не весь регистр? да как раз хочу обнулить весь только не как не пойму как . ща попробую все исправить Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 5 июня, 2015 Опубликовано 5 июня, 2015 · Жалоба да как раз хочу обнулить весь только не как не пойму как . ща попробую все исправить подсказка - у регисра есть вход ресет (в описании тоже самое) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hankot3 0 5 июня, 2015 Опубликовано 5 июня, 2015 · Жалоба Исправил все скомпелировалось но похожу я опять что то не то сделал. (((( https://pp.vk.me/c625623/v625623687/33fb1/tXP6fOq62cM.jpg выпадает такая ошибка https://pp.vk.me/c625623/v625623687/33fc3/4zHYuljfmFE.jpg тест бенч module TEStbench; // Inputs reg clk; reg ce; reg rst; reg [15:0] d_in; genvar i; // Outputs wire [15:0] d_out; wire [15:0] filter_out; // Instantiate the Unit Under Test (UUT) line uut ( .clk(clk), .ce(ce), .rst(rst), .d_in(d_in), .d_out(d_out), .filter_out(filter_out) ); initial begin clk = 0; end always #50 clk = ~ clk; event reset_trigger; //объявление событий event reset_done_trigger; // //блок формирования Reset initial begin forever begin //бесконечный цикл @ (reset_trigger); //ждем события reset_trigger @ (posedge clk); //ждем clk rst = 1; ce =0 ; d_in = 16'd00 ; //сброс @ (posedge clk); rst = 0; -> reset_done_trigger; //сигналим что reset выполнен end end //Ход симуляции initial begin: TEST_CASE #10 -> reset_trigger; //делаем ресет с задержкой 10 @ (reset_done_trigger); //ждем сигнал reset_done_trigger @ (posedge clk); ce = 1; //разрешаем счет d_in = 16'd9 ; repeat (10) begin //цикл на 5 повторений @ (posedge clk); //ждем clk end ce= 0; //запрещаем счет end endmodule Во вторых. Не особо понятно зачем усложнять все generate если можно просто сделать в цикле в always. через always не получается.. щас пробую...ни не пойму я сделал бред. посмотрел RTL схему. но черт возьми насчет ресета и правдо не могу сообразить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 5 июня, 2015 Опубликовано 5 июня, 2015 · Жалоба через always не получается.. щас пробую...ни не пойму Выложите код line.v в виде кода, а то смотреть и редактировать неудобно. У Вас в конце отсутствует end и сам always в строчках 42-46 описан не совсем корректно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hankot3 0 5 июня, 2015 Опубликовано 5 июня, 2015 · Жалоба Выложите код line.v в виде кода, а то смотреть и редактировать неудобно. У Вас в конце отсутствует end и сам always в строчках 42-46 описан не совсем корректно. `timescale 1ns / 1ps module line(input clk, input ce, input rst, //input LD_psp, //input psp, input [15:0] d_in, output [15:0] d_out //output [15:0] filter_out // output reg psp_o ); parameter depth_select_bits = 10; parameter data_width = 16; wire [data_width-1:0] data_in, data_out; reg [data_width-1:0] shift_reg [depth_select_bits-1:0]; assign d_out = shift_reg[depth_select_bits-1]; //reg [data_width-1:0] sum = 0; always @(posedge clk) if(rst) shift_reg[i] <= 0; else if (ce) shift_reg[i] <= d_in; genvar i; generate for (i=1; i < depth_select_bits-1; i=i+1) begin: p1 always @(posedge clk) if (ce) shift_reg[i] <= shift_reg[i-1]; end endgenerate //always @(posedge clk) //begin // if (ce) // begin : summ // integer j1; // sum = 0; // for (j1 = 0; j1 < depth_select_bits; j1 = j1 + 1) // begin // sum = sum + shift_reg[j1]; // end // end //end //assign filter_out = sum; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Swup 0 5 июня, 2015 Опубликовано 5 июня, 2015 · Жалоба Примерно так: always @(posedge clk) begin for (i=0; i<N; i=i+1) shiftreg[i+1] <= shiftreg[i]; shiftreg[0] <= IN; OUT <= shiftreg[N]; end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Hankot3 0 5 июня, 2015 Опубликовано 5 июня, 2015 · Жалоба спасибо,сейчас буду реализовывать :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться