Jump to content

    

Recommended Posts

К EPM570 подключены три внешние шины адреса ARA,ARB,AWA, одна шина данных DW и внешняя SRAM со своими шинами адреса, данных и управления WRRAM,OERAM.

 

Нужно циклически выполнять следующее:

 

1. прочитать содержимое SRAM по адресу ARA и выдать на пины DA

2. прочитать содержимое SRAM по адресу ARB и выдать на пины DB

3. состояние на шине DW записать по адресу AWA.

 

Всё это нужно сделать за три такта входной частоты 100 MHz.

 

Нарисовал схему в граф редакторе.

А в симуляторе вижу что это работать точно не будет.

Шина адреса sram (ARAM) пляшет во время переключения.

Сигналы OERAM и WRRAM имеют разную задержку.

Задний фронт WRRAM вообще появляется на пине позже чем переключается шина данных DRAM на ввод.

 

Посоветуйте что исправить. Или вообще всё переделать.

Время доступа SRAM 8 нс.

post-40106-1443462481_thumb.jpg

post-40106-1443462499_thumb.jpg

Share this post


Link to post
Share on other sites
К EPM570 подключены три внешние шины адреса ARA,ARB,AWA, одна шина данных DW и внешняя SRAM со своими шинами адреса, данных и управления WRRAM,OERAM.

 

Нужно циклически выполнять следующее:

 

1. прочитать содержимое SRAM по адресу ARA и выдать на пины DA

2. прочитать содержимое SRAM по адресу ARB и выдать на пины DB

3. состояние на шине DW записать по адресу AWA.

 

Всё это нужно сделать за три такта входной частоты 100 MHz.

 

Нарисовал схему в граф редакторе.

А в симуляторе вижу что это работать точно не будет.

Шина адреса sram (ARAM) пляшет во время переключения.

Сигналы OERAM и WRRAM имеют разную задержку.

Задний фронт WRRAM вообще появляется на пине позже чем переключается шина данных DRAM на ввод.

 

Посоветуйте что исправить. Или вообще всё передать.

Время доступа SRAM 8 нс.

Абсолютно справедливо-работать не будет. Задержка между клоком и данными на выход 6... 10 нс, задержка в памяти 8 нс, задержка на вход 3... 5 нс. Итого, для чтения нужно минимум 3 такта на один адрес. И это если разводка точка-точка и на шине только ОЗУ. Для записи приблизительно 5 из похожих соображений. Нужна стейт машина для фиксации нахождения в режиме и куча флагов типа готов-поехали-принял. Иначе никак.

Edited by Corner

Share this post


Link to post
Share on other sites

Может шина адреса одну, с выбором чипа. По переднему фронту CLK выставляешь адрес с выбором чипа, по заднему фронту считываешь данные

Share this post


Link to post
Share on other sites
Спасибо. Понятно. Думал за 1 такт можно ухитриться, но видать нет (

Попытка - не пытка.

post-17402-1443509406_thumb.jpg

module sram
#(    parameter wdata = 8,
    parameter waddr = 10    )
(    input clk,
    input    [waddr-1:0]    ara_i, arb_i, awa_i,
    input    [wdata-1:0] dw_i,
    output    reg    [wdata-1:0]    da_or, db_or,
    inout    [wdata-1:0]    dram_io,
    output    reg    [waddr-1:0]    aram_or,
    output    oeram_o,
    output    wram_o,
    output    reg    dataready_or
);
    assign    oeram_o = 0;
    assign    dram_io = (we_r ? rwram : {waddr{1'bz}});
    assign    wram_o = (we_r ? ~clk | wramag_r : 1'b1);

    reg    [wdata-1:0] rwram;
    reg    we_r;
    reg    wramag_r;
    reg    [1:0]    stage_r;
    
    always @ (posedge clk)
        begin
        if (stage_r == 2'b10)    stage_r <= 0;
        else    stage_r <= stage_r + 1;
        
        case    (stage_r)
            2'b00:    begin
                    aram_or <= ara_i;
                    we_r <= 0;
                    dataready_or <= 0;
                    end
            2'b01:    begin
                    aram_or <= arb_i;
                    da_or <= dram_io;
                    rwram <= dw_i;
                    end
            2'b10:    begin
                    aram_or    <= awa_i;
                    db_or <= dram_io;
                    we_r <= 1;
                    dataready_or <= 1;
                    end
        endcase
        end    
        
    always    @ (negedge clk)
        begin
        if (stage_r == 0)    wramag_r <= 1; // это нужно, чтобы избавиться от глитча при возврате из режима записи (см. формирование wram_o)
        else    wramag_r <= 0;
        end
endmodule

С времянками, конечно, получается вольно и лишь бы сама ОЗУшка успевала.

Share this post


Link to post
Share on other sites
Создайте графический символ этому файлу и вставьте в свой проект. Может, ещё и не заработает. Чего зря рисовать то?

Сделал. Все вроде работает но на чипе с speed grade 4.

Понятно что для speed grade 5 тактовую понижать нужно.

 

    always    @ (negedge clk)
        begin
        if (stage_r == 0)    wramag_r <= 1; // это нужно, чтобы избавиться от глитча при возврате из режима записи (см. формирование wram_o)
        else    wramag_r <= 0;
        end

Подскажите вот это как в граф редакторе на триггере реализовать?

Так как на прикреплённой картинке или как то иначе?

post-40106-1443542273_thumb.jpg

post-40106-1443542278_thumb.jpg

post-40106-1443542460_thumb.jpg

Share this post


Link to post
Share on other sites
    always    @ (negedge clk)
         begin
         if (stage_r == 0)    wramag_r <= 1; // это нужно, чтобы избавиться от глитча при возврате из режима записи (см. формирование wram_o)
         else    wramag_r <= 0;
         end

Подскажите вот это как в граф редакторе на триггере реализовать?

Фактически, здесь написано: всегда при отрицательном фронте clk присваивать wramag=1, если stage равен 0 и, если иначе, то обнулять этот wramag.

Так и делаем:

1. инвертируем clk (надо же по отрицательному фронту защёлкивать) и подаём на тактовый вход DFF

2. биты stage заводим на ИЛИ-НЕ и подаём на вход данных D

3. защёлкивам в DFF

4. снимаем результат с Q

post-17402-1443602365_thumb.jpg

p.s. А зачем Вам манипуляции с OE и CS? Если используется один чип памяти и его порты работают через ПЛИС, то пусть по умолчанию всегда будет выбран и всегда в режиме выдачи данных с текущего адреса. Ему (чипу ОЗУ) всё равно, а Вам - экономия ресурсов на ПЛИСке.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this