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

 
 
> Клоки, Использование нескольких синх. сиг. в пр
DimaV
сообщение Jul 21 2004, 13:07
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 36
Регистрация: 21-07-04
Пользователь №: 349



Ситуация: В большом проекте нужно использовать несколько клоков (не кратных). Есть компоненты которые работают синхронно от разных клоков.
Вопрос: Как грамотно соеденить эти компоненты между собой?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
FAE_SKV
сообщение Nov 9 2010, 10:48
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 14-11-07
Пользователь №: 32 325



Цитата(DimaV @ Jul 21 2004, 17:07) *
Ситуация: В большом проекте нужно использовать несколько клоков (не кратных). Есть компоненты которые работают синхронно от разных клоков.
Вопрос: Как грамотно соеденить эти компоненты между собой?

Можно использовать, так называемый клокбридж. Делается на двух буферных регистрах и нескольких дополнительных риггерах. Идея в следующем. Данные пишуться в первый регистр, работающий по клоку схемы которая пишет. Одновременно на дополнительном триггере выставляется флаг наличия данных для схемы работающей на другой частоте, а на другом триггере выставляется сигнал занятости входного регистра для своей схемы . На стороне работающей по другому клоку, при определении наличия выставленного флага, данные из первого регистра переписываются во второй и выставляется флаг готовности данных по которому данные из него считываются. Одновременно с перезаписью данных во второй регистр сбрасывается флаг наличия данных в первом регистре и сигнал занятости первого регистра.
Можно сделать универсальные модули для записи, чтения, записи-чтения по шине или одиночных сигналов. и просто вставлять их между готовыми модулями

Цитата(DimaV @ Jul 21 2004, 17:07) *
Ситуация: В большом проекте нужно использовать несколько клоков (не кратных). Есть компоненты которые работают синхронно от разных клоков.
Вопрос: Как грамотно соеденить эти компоненты между собой?


Вот небольшой пример. Клокбридж для записи данных.
Может осуществляться переход как с большей, так и с меньшей частоты.

CODE
module ClockBridge_BusOut(
Data_IN,
wr_in,
clk_out,
reset,
clk_in,
Data_in_rdy,
Data_Out,
Data_out_rdy
);


// synopsys template
parameter DATA_WIDTH = 16,
T = 1;

// IO port Declarations

input [DATA_WIDTH-1:0] Data_IN;
input wr_in;
input clk_out;
input reset;
input clk_in;
output Data_in_rdy;
output [DATA_WIDTH-1:0] Data_Out;
output Data_out_rdy;

//Internal Declarations


wire [DATA_WIDTH-1:0] #T Data_IN;
wire #T wr_in;
wire clk_out;
wire reset;
wire clk_in;
wire #T o_bsy;
wire [DATA_WIDTH-1:0] #T Data_Out;
wire #T Data_out_rdy;

// Local declarations

// Internal signal declarations

reg reg_rdy_data_in;
reg data_reg_in_rdy;
reg [DATA_WIDTH-1:0] reg_data_in;
reg [DATA_WIDTH-1:0] reg_data_out;
reg data_reg_in_rdy_1;

//---------------------------------------------------------

//Тактовый домен со сторы данных на запись

//Записываем данные во входной регистр

always @(posedge clk_in or posedge reset)
if (reset)
reg_data_in[DATA_WIDTH-1:0] <= #T 0;
else
if (wr_in)
reg_data_in[DATA_WIDTH-1:0] <= #T Data_IN[DATA_WIDTH-1:0];

// Сигнал готовности данных во входном регистре
// Выставляем стробом записи в регистр
//Сбрасывается по сигналу готовности в выходном регистре

always @(posedge clk_in or posedge reset)
if (reset)
reg_rdy_data_in <= #T 1'b0;
else
reg_rdy_data_in <= #T (reg_rdy_data_in | wr_in) & ~data_reg_in_rdy_1;

assign Data_in_rdy = reg_rdy_data_in;

//--------------------------------------------------------

//Тактовый домен со сторы данных на чтение

//Стробируем сигнал готовности данных во входном регистре частотой сос стороны чтения
//Это нужно, чтобы не попасть на фронт сигнала и данные гарантированно были зафиксированы во входном регистре.

always @(posedge clk_out or posedge reset)
if (reset)
data_reg_in_rdy <= #T 1'b0;
else
data_reg_in_rdy <= #T reg_rdy_data_in;


//По сигналу готовности данные со входного регистра записываются в выходной

always @(posedge clk_out or posedge reset)
if (reset)
reg_data_out[DATA_WIDTH-1:0] <= #T 0;
else
if (data_reg_in_rdy)
reg_data_out[DATA_WIDTH-1:0] <= #T reg_data_in[DATA_WIDTH-1:0];

assign Data_Out[DATA_WIDTH-1:0] = reg_data_out[DATA_WIDTH-1:0];

//Сигнал готовности данных в выходном регистре

always @(posedge clk_out or posedge reset)
if (reset)
data_reg_in_rdy_1 <= #T 1'b1;
else
data_reg_in_rdy_1 <= #T data_reg_in_rdy;


assign Data_out_rdy = data_reg_in_rdy_1;

endmodule // ClockBridge_BusOut


Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DimaV   Клоки   Jul 21 2004, 13:07
- - Esquire   Смотря какая связь компонентов требуется. Если обм...   Jul 21 2004, 15:52
- - LeonY   Цитата(DimaV @ Jul 21 2004, 05:07 PM)Есть ком...   Jul 21 2004, 20:10
- - DimaV   Цитата(LeonY @ Jul 22 2004, 12:10 AM)А чего б...   Jul 22 2004, 06:57
- - Hadgehog   Наверное самое лучшее писать проект сверху вниз, д...   Jul 22 2004, 10:49
- - DimaV   Цитата(Hadgehog @ Jul 22 2004, 02:49 PM)Навер...   Jul 22 2004, 11:24
- - Hadgehog   Извини про эластичный буфер не слышал, если кто пр...   Jul 22 2004, 11:35
- - DimaV   Если у кого есть полезные ссыски где можно посмотр...   Jul 22 2004, 14:55
- - vladz   есть статья Каммингса Synthesis and Scripting Tech...   Jul 23 2004, 16:02
- - Guest   есть такое понятие как синхронизаторы (блок из три...   Jul 23 2004, 17:41
|- - sazh   Цитата(Guest @ Jul 23 2004, 20:41) есть т...   Oct 2 2010, 11:53
|- - des00   Цитата(sazh @ Oct 2 2010, 06:53) Получает...   Oct 2 2010, 13:22
||- - sazh   Цитата(des00 @ Oct 2 2010, 16:22) занятны...   Oct 2 2010, 13:48
||- - des00   Цитата(sazh @ Oct 2 2010, 07:48) P. S. Хо...   Oct 2 2010, 13:56
||- - DmitryR   Модель метастабильности нет смысла делать, потому ...   Oct 2 2010, 16:48
||- - des00   Цитата(DmitryR @ Oct 2 2010, 11:48) Модел...   Oct 2 2010, 17:01
|- - Intekus   Поясните пожалуйста, какой именно анализ метастаби...   Oct 3 2010, 06:38
|- - sazh   Цитата(Intekus @ Oct 3 2010, 09:38) дальш...   Oct 3 2010, 10:22
|- - Intekus   Видимо, голова работает в режиме выходного дня - ...   Oct 3 2010, 12:28
|- - DmitryR   Цитата(sazh @ Oct 3 2010, 14:22) Все так....   Oct 4 2010, 06:00
- - gab   Цитата(DimaV @ Jul 21 2004, 05:07 PM)Ситуация...   Jul 26 2004, 12:14
- - zov   Эластичный буфер - это просто FIFO со специальной ...   Aug 23 2004, 12:03
- - judge47   Вы можете представить схему и обьяснить, каков при...   Sep 19 2010, 03:56
|- - Artem_Petrik   Цитата(judge47 @ Sep 19 2010, 06:56) Вы м...   Sep 19 2010, 06:50
|- - wolfman   Цитата(judge47 @ Sep 19 2010, 13:26) Вы м...   Sep 19 2010, 17:14
- - vadimuzzz   а пользовался ли кто-нибудь этим: http://www.mento...   Oct 2 2010, 13:02
- - judge47   Я понимаю, что в основном на этом форуме сидят мас...   Nov 9 2010, 08:39
- - judge47   понимаю, что в основном на этом форуме сидят масте...   Nov 18 2010, 09:40


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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 09:17
Рейтинг@Mail.ru


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