Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Языки описания аппаратуры (VHDL и др.)

пробую сваять SPI slave одним VERILOG файлом (код)

Отправлено Degrees 11 декабря 2006 г. 14:32
В ответ на: Ответ: отправлено <font color=gray>Postoroniy_V</font> 11 декабря 2006 г. 13:17

//
// SPI
//
//
// SCLK ________----____----____----____----____----____----____----____----________
//
// CS ----____________________________________________________________________----
//
// sample ________!_______!_______!_______!_______!_______!_______!_______!___________
//
// SDI ???><######><######><######><######><######><######><######><######>//
// SDO ???><######><######><######><######><######><######><######><######>//
// MSB LSB
//
// 7 6 5 4 3 2 1 0
//
//
//
//
//
module SPI (SDI, SDO, SCLK, CS, PD_OUT, D_READY, READY_R, PD_IN, DATA_LATCH);

input SDI;
input SCLK;
input CS;
input DATA_LATCH;
input [7:0]PD_IN;
output SDO;
output [7:0]PD_OUT;
output D_READY;
input READY_R;
reg [7:0] SHIFT_REG;
reg [7:0] PD_OUT_REG;
reg [7:0] PD_IN_REG;
reg TEMP_SDI_TRIG;
reg D_RDY;
reg FLAG_COPY_SHIFT;

assign SDO = SHIFT_REG[7];
assign PD_OUT = SHIFT_REG; // PD_IN_REG; // SHIFT_REG; //PD_OUT_REG;
assign D_READY = D_RDY;


always @(posedge DATA_LATCH)
PD_IN_REG = PD_IN;


always @(negedge CS)
SHIFT_REG = PD_IN_REG; // по \_CS копир из парал.рег в сдвиг


always @(negedge SCLK )
SHIFT_REG = {SHIFT_REG[6:0], TEMP_SDI_TRIG};


always @(posedge SCLK) // выборка
TEMP_SDI_TRIG = SDI;

always @(posedge READY_R or posedge CS)begin // CS ___---
if( READY_R ) D_RDY=0;
else D_RDY=1;
if (CS) PD_OUT_REG = SHIFT_REG;
end


endmodule


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
увеличьте 2 вдвое:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru