реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> VHDL синтезирование задержек
SM
сообщение Nov 30 2009, 05:58
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Dima_G @ Nov 30 2009, 08:56) *
Не путайте FPGA и ASIC!

Они оба подчиняются одним и тем же правилам. И зависимости времянок от температуры/питания/процесса около-те-же. (только не думайте, что я советую идти асинхронным путем, просто нет ничего невозможного, особенно если констрейнить вплоть до физического расположения ячеек).
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Nov 30 2009, 06:12
Сообщение #17


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(des00 @ Nov 30 2009, 07:40) *
нцатый раз советую, сделайте синхронный дизайн !!!
Слушай умного человека, внимательно слушай.

Цитата(%-) @ Nov 30 2009, 08:06) *
вы хотите сказать что ПЛИС на задержкой 8нс справится с клоком 133 МГц ?
В большинстве случаев умным людям хватит и 66 МГц. Разве свет клином сошелся только на одном из двух фронтов тактовых импульсов ?

Цитата(%-) @ Nov 30 2009, 08:06) *
а вот мне хочется асинхронный - и буду его долбить!

Да, да ! Долбись головой об стену ! Только когда прийдёт другая партия ПЛИС, немного измениться питание (из-за другой серии источников питания) не удивляйся почему задержки резко изменились.
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 30 2009, 06:24
Сообщение #18


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(%-) @ Nov 29 2009, 23:53) *
можете оставаться при своих "синхронных" мнениях, но существуют теже чипы видеоконтроллеров с АСИНХРОННЫМ интерфейсом, которые могут манипулировать с адресом своей SRAM ПОСЛЕ каждой записи по асинхронной шине. и вовсе без синхронности и на частотах до 100 мгц включительно.


Какое отношение имеет асинхронный интерфейс к синхронному дизайну? Не мешайте все в одну кучу.

Цитата
неужели ПЛИС такие убогие, что это не реализуемо на асинхронке? А?


реализуемо но не с вашим уровнем владения цифровой схемотехникой и ПЛИС а частности. Без обид, это констатация факта %)


--------------------
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 30 2009, 06:30
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(%-) @ Nov 30 2009, 08:06) *
вы хотите сказать что ПЛИС на задержкой 8нс справится с клоком 133 МГц ?

И кто же это Вас так жестоко дезинформировал? Неужели собственные догадки на тему восьмерки в маркировке микрухи?
Go to the top of the page
 
+Quote Post
%-)
сообщение Nov 30 2009, 06:37
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



уговорили.
буду на синхронке делать.

есть CLKOUT - выход с процессора, к нему привязаны все времянки остальных сигналов:

we - строб записи
a - адрес
d - данные
cs - выбор чипа

времянка на рисунке ниже.

Tsetup=2clk
Thold =1 clk
Twrite=2 clk
Ttransition=1 clk

Помогите пожалуйста кодом - как можно сделать синхронно!

Сообщение отредактировал %-) - Nov 30 2009, 06:41
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
sazh
сообщение Nov 30 2009, 06:40
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(%-) @ Nov 30 2009, 08:06) *
в целом доволен, можно определить задержку и каскадировать буферы, если надо.


Хоззяин - барин.
Код
module lcell_xor
(
input  in_strob,
output out_a,
output out_b
);

wire   out_lcell[5:0];

lcell     lcell_a  (
                   .in         (in_strob),
                   .out        (out_lcell[0])
                   );

genvar i;
    generate for (i = 1; i <= 5; i = i + 1)
        begin : block
lcell    lcell_b  (
                   .in         (out_lcell[i-1]),
                   .out        (out_lcell[i])
                   );    
        end
    endgenerate

assign out_a = out_lcell[1] ^ out_lcell[5];
assign out_b = (out_lcell[2] != out_lcell[4]);

endmodule
Go to the top of the page
 
+Quote Post
%-)
сообщение Nov 30 2009, 06:43
Сообщение #22


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(SM @ Nov 30 2009, 09:30) *
И кто же это Вас так жестоко дезинформировал? Неужели собственные догадки на тему восьмерки в маркировке микрухи?


кстати, а что означает восьмёрка в конце? задержка от одного входного пина на другой выходной пин?

помогите плиз с синхронным интерфейсом (времянки в предыдущем мойм сообщении)
CLKOUT=133 мгц
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Nov 30 2009, 06:48
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Времянки видно, но я решительно не понимаю, в чем затруднение?
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 30 2009, 06:58
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(%-) @ Nov 30 2009, 09:43) *
кстати, а что означает восьмёрка в конце?

А ничего не означает. Так, условный попугай, происхождение которого известно разве что разработчикам кристалла.

Цитата(%-) @ Nov 30 2009, 09:43) *
помогите плиз с синхронным интерфейсом (времянки в предыдущем мойм сообщении)

А что помогать-то? Нарисуйте схему на бумажке из триггеров и логики, и опишите потом на удобном вам языке.
Go to the top of the page
 
+Quote Post
%-)
сообщение Nov 30 2009, 07:08
Сообщение #25


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(Shtirlits @ Nov 30 2009, 10:48) *
Времянки видно, но я решительно не понимаю, в чем затруднение?


как привязать остальные сигналы к CLOCKOUT ?

завести счётчик CLKOUT? и в зависимости от его значения ловить данные и адрес?

P.S. никогда не нарезал сигналы по клоку.

Люди!
Покажите как это делается!!!
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 30 2009, 07:23
Сообщение #26


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(%-) @ Nov 30 2009, 01:08) *
как привязать остальные сигналы к CLOCKOUT ?
Покажите как это делается!!!


в ваших предыдущих темах вам несколько раз рассказывали как это делается. поднимите старые темы.

если на картинке все что вам нужно, то я бы сделал как то так

Код
wire clk = clkout_from_pll_in_zero_buffer_mode;

always_ff @(posedge clk) begin
  // IO register latch
  a_reg   <= a;
  d_reg   <= d;
  nrd_reg <= nrd;
  nwr_reg <= nwr;
  ncs_reg <= ncs;
  //
  write   <= ~nwr_reg & ~write & ~ncs_reg;
end

always_ff @(posedge clk) begin
  if (write) begin
    case (a_reg)
      // bla-bla-bla
    endcase
  end
end


PS. Write access достаточно одного такта.


--------------------
Go to the top of the page
 
+Quote Post
%-)
сообщение Nov 30 2009, 07:30
Сообщение #27


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(des00 @ Nov 30 2009, 11:23) *
в ваших предыдущих темах вам несколько раз рассказывали как это делается. поднимите старые темы.

если на картинке все что вам нужно, то я бы сделал как то так

Код
wire clk = clkout_from_pll_in_zero_buffer_mode;

always_ff @(posedge clk) begin
  // IO register latch
  a_reg   <= a;
  d_reg   <= d;
  nrd_reg <= nrd;
  nwr_reg <= nwr;
  ncs_reg <= ncs;
  //
  write   <= ~nwr_reg & ~write & ~ncs_reg;
end

always_ff @(posedge clk) begin
  if (write) begin
    case (a_reg)
      // bla-bla-bla
    endcase
  end
end


PS. Write access достаточно одного такта.


огромное спасибо smile.gif

у вас CLK берется с PLL плис, но процессор имеет свой CLKOUT - можно ли на него зацепиться через входной пин плис?

в какой момент можно изменить адрес у памяти? во время Transition Time?

можно ли CLKOUT(133МГц) взять с платы проводом длиной 15 см , присоединив резисторы по 33 ом к процессору и входной ноге плис?

Сообщение отредактировал %-) - Nov 30 2009, 07:31
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Nov 30 2009, 07:35
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



"конечный автомат" реализованный любым способом, чем нагляднее - тем меньше места ошибке.
Ниже не самый лучший вариант, но для примера сгодится.
Сигналы ready и AD_out совпадают с точностью до полярности. Так получается, что автомат готов именно тогда, когда не пишет в память.
Код
    type state_t is (
        st_idle,
        st_setup_1,
        st_setup_2,
        st_write_1,
        st_write_2,
        st_hold
    );
    
    signal state : state_t;

          
    
begin

    RD <= '0';

    
    process(reset, clk)
    begin
        if (reset='1') then
            state <= st_idle;
            CS_out <= '1';
            AD_out <= '0';
            nWE_out <= '1';
            ready <= '0';
        elsif rising_edge(clk) then
            AD_out <= '1';
            ready <= '0';
            CS_out <= '1';
            case state is
                when st_idle =>
                    if cmd_write='1' then
                        state <= st_setup_1;
                    else
                        AD_out <= '0';
                        ready <= '1';
                    end if;
                when st_setup_1 =>
                    state <= st_setup_2;
                when st_setup_2 =>
                    state <= st_write_1;
                when st_write_1 =>
                    CS_out <= '0';
                    state <= st_write_2;
                when st_write_2 =>
                    CS_out <= '0';
                    state <= st_hold;
                when st_hold =>
                    ready <= '1';
                    state <= st_idle;
            end case;
        end if;
    end process;
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 30 2009, 07:35
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(%-) @ Nov 30 2009, 10:30) *
можно ли CLKOUT(133МГц) взять с платы проводом длиной 15 см , присоединив резисторы по 33 ом к процессору и входной ноге плис?

К ноге ПЛИС не надо резистора, только у источника сигнала.
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 30 2009, 07:55
Сообщение #30


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(%-) @ Nov 30 2009, 01:30) *
у вас CLK берется с PLL плис, но процессор имеет свой CLKOUT - можно ли на него зацепиться через входной пин плис?


не просто с PLL, а с PLL в режиме компенсации задержек IO буфера, у альтеры этот режим называется ZeroDelayBuffer. У ксайлов Source Synchronus Mode. На вход этой PLL и подаете CLKOUT с проца. ИМХО так будет лучше всего. В противном случае (если PLL использовать нельзя) нужно будет учитывать задержку клока до триггеров в IO буфере.

Либо делать систему с нарезкой сигнала на собственной тактовой частоте от локального генератора. Тогда логику формирования сигнала записи надо будет поменять (относительно моего примера).

Цитата
в какой момент можно изменить адрес у памяти? во время Transition Time?


не совсем понимаю что у вас "память", если это плис которую проц видит как память, то проц может менять адрес в каждой новой транзакции. Если фпга транслирует то что приняла от проца к своей памяти, то ИМХО после завершения доступа к этой памяти.


--------------------
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 21:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.0151 секунд с 7
ELECTRONIX ©2004-2016