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

 
 
> последовательный интерфейс, между ПЛИС и МК
skilful
сообщение Sep 11 2012, 06:44
Сообщение #1


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

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



Добрый день.

Имеется ПЛИС Циклон (питание 3.3 В) и микроконтроллер AVR (питание 5 В).
Хочу связать их по SPI.

Хотел затактировать приемник в ПЛИС от микроконтроллера.

По записи данных в ПЛИС хочу поставить двухклоковую фифошку. С этим вроде вопросов вроде не возникает --
контроллер, когда ему надо выставляет бит данных и делает синхронизирующий импульс.
Таким образом, сколько битов передается от МК в ПЛИС столько и будет синхроимпульсов от МК.


По чтению данных из ПЛИС хочу тоже хочу поставить двухклоковую фифошку.
Вот тут вопрос -- когда я логикой ПЛИС запишу в фифо данные -- как мне контроллером узнать, что данные уже есть в фифо?
У фифо есть сигнал "не пустое", но этот сигнал появляется при наличии синхроимпульсов от МК.

То есть мне нужно генерить "пустые" синхроимпульсы для ПЛИС и ждать, когда появится сигнал фифо "не пустое"?

Может быть изначально я неверно начал делать?

Может быть ПЛИС должна тактировать микроконтроллер? Если да, то как быть с преобразованием 3.3 В в 5 В? И сигнал нужно через PLL пускать?


Спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
skilful
сообщение Sep 11 2012, 13:52
Сообщение #2


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

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



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


помогите разобраться с этим кодом
из http://electronix.ru/forum/index.php?showtopic=93650




посмотрите как по ссылке сделан SPI .

http://www.fpga4fun.com/SPI2.html

Вот в этом блоке привязывают внешний клок spi к внутренним клокам плис
------------------------------------------------------------------------------------------------------------------------------
We sample/synchronize the SPI signals (SCK, SSEL and MOSI) using the FPGA clock and shift registers.

// sync SCK to the FPGA clock using a 3-bits shift register
reg [2:0] SCKr; always @(posedge clk) SCKr <= {SCKr[1:0], SCK};
wire SCK_risingedge = (SCKr[2:1]==2'b01); // now we can detect SCK rising edges
wire SCK_fallingedge = (SCKr[2:1]==2'b10); // and falling edges

// same thing for SSEL
reg [2:0] SSELr; always @(posedge clk) SSELr <= {SSELr[1:0], SSEL};
wire SSEL_active = ~SSELr[1]; // SSEL is active low
wire SSEL_startmessage = (SSELr[2:1]==2'b10); // message starts at falling edge
wire SSEL_endmessage = (SSELr[2:1]==2'b01); // message stops at rising edge

// and for MOSI
reg [1:0] MOSIr; always @(posedge clk) MOSIr <= {MOSIr[0], MOSI};
wire MOSI_data = MOSIr[1];


Что тут происходит?
Go to the top of the page
 
+Quote Post
Torpeda
сообщение Sep 11 2012, 14:33
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424



Цитата(skilful @ Sep 11 2012, 16:52) *
исключаться должно программно. МК набил фифо записи как командами чтения, так и записи, например. А потом ждет ответа от фифо чтения.
в сигналы от фифо чтения все сильно и уперлось -- теперь пытаюсь понять Ваш метод с синхронизацией.

"МК набил фифо записи как командами чтения, так и записи, ..." - а ПЛИС при этом чё с этим ФИФО делает?
Ждёт его заполнения? По какому событию определяет заполнение?
Или ПЛИС одновременно его и читает (судя по схеме)? А что если перехлеснётся ПЛИС с МК?


Цитата(skilful @ Sep 11 2012, 16:52) *
Вот в этом блоке привязывают внешний клок spi к внутренним клокам плис
------------------------------------------------------------------------------------------------------------------------------
We sample/synchronize the SPI signals (SCK, SSEL and MOSI) using the FPGA clock and shift registers.
Что тут происходит?

так тут-же и написано: SCK, SSEL and MOSI пропускается через 2-х битовый shift registers.
Это и есть тот самый синхронизатор на 2-х тригерах, о котором я и говорил вначале.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- skilful   последовательный интерфейс   Sep 11 2012, 06:44
- - Lmx2315   Вы по SPI хотите связать мк и плис, значит у вас о...   Sep 11 2012, 06:55
- - skilful   для примера, допустим, внутри ПЛИС 10 регистров по...   Sep 11 2012, 07:22
|- - Lmx2315   ..разделите регистры , пусть плис пишет в свои а м...   Sep 11 2012, 07:26
- - stu   правильно по поводу: "надо опрашивать состоян...   Sep 11 2012, 07:26
- - skilful   а как мне "разделенные" регистры связать...   Sep 11 2012, 07:41
|- - Lmx2315   пусть ПЛИС пишет в счётные регистры, а МК их считы...   Sep 11 2012, 07:54
|- - Torpeda   Цитата(skilful @ Sep 11 2012, 10:41) а ка...   Sep 11 2012, 08:09
|- - troiden   Цитата(Torpeda @ Sep 11 2012, 12:09) - Вс...   Sep 11 2012, 08:19
||- - Torpeda   Цитата(troiden @ Sep 11 2012, 11:19) Эмм....   Sep 11 2012, 08:25
||- - troiden   Цитата(Torpeda @ Sep 11 2012, 12:25) синх...   Sep 11 2012, 08:31
||- - Torpeda   Цитата(troiden @ Sep 11 2012, 11:31) SPI ...   Sep 11 2012, 08:49
||- - troiden   Попорядку Цитата(Torpeda @ Sep 11 2012, 12...   Sep 11 2012, 09:01
||- - Torpeda   Цитата(troiden @ Sep 11 2012, 12:01) У на...   Sep 11 2012, 09:12
||- - troiden   Цитата(Torpeda @ Sep 11 2012, 13:12) Вот ...   Sep 11 2012, 09:40
|- - skilful   Цитата(Torpeda @ Sep 11 2012, 11:09) В де...   Sep 11 2012, 08:43
- - skilful   вот чтобы всяких пересинхронизаций не было -- и ду...   Sep 11 2012, 09:13
|- - Torpeda   Цитата(skilful @ Sep 11 2012, 12:13) вот ...   Sep 11 2012, 11:47
|- - skilful   Цитата(Torpeda @ Sep 11 2012, 14:47) 1) д...   Sep 11 2012, 12:28
|- - troiden   Цитата(Torpeda @ Sep 11 2012, 15:47) Т.е....   Sep 11 2012, 12:41
|- - Torpeda   Цитата(troiden @ Sep 11 2012, 15:41) В сл...   Sep 11 2012, 13:41
|- - troiden   Цитата(Torpeda @ Sep 11 2012, 17:41) 1) ...   Sep 11 2012, 14:13
|- - Torpeda   Цитата(troiden @ Sep 11 2012, 17:13) А эт...   Sep 11 2012, 14:49
|- - troiden   Цитата(Torpeda @ Sep 11 2012, 18:49) нуда...   Sep 11 2012, 14:58
|- - Александр77   Цитата(troiden @ Sep 11 2012, 18:58) Посл...   Sep 11 2012, 18:28
|- - troiden   Цитата(Александр77 @ Sep 11 2012, 22:28) ...   Sep 11 2012, 19:28
- - skilful   Просимулировал в МоделСиме двухклоковую фифо (LPM_...   Sep 11 2012, 10:05
- - Alexey K   Вопрос. Зачем один и тот же регистр делать доступ...   Sep 11 2012, 14:00
- - skilful   там я выше приводил пример -- если он в роли тайме...   Sep 11 2012, 14:14
|- - troiden   Цитата(skilful @ Sep 11 2012, 18:14) там ...   Sep 11 2012, 14:17
- - skilful   Так я смотрю триггера 3 ? // sync SCK to the FPGA...   Sep 11 2012, 14:42


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 17:43
Рейтинг@Mail.ru


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