# Autres langages > Autres langages > VHDL >  Bluetooth et vhdl

## comptet

Bonjour tout le monde.

Je viens pour avoir quelques claircissement sur le bluetooth.^^

Je dois raliser un stack bluetooth en vhdl, le PLD final n'est pas encore choisi mais j'ai une carte d'valuation de chez Actel, une igloo nano pour faire un prototype.
J'ai slectionn le contrleur bluetooth suivant : CC2560 de chez Texas Instruments.
Il embarque toutes les couches basses du protocole bluetooth, jusqu'au HCI, et je communique avec ce module grce  une liaison UART. 

Mon application bluetooth servira  communiquer entre un PC et le PLD, a sera juste de l'change de donnes asynchrones, pas de vocale, ou de connexions synchrones donc.

Je me pose la question suivante, je vois deux solutions qui s'offrent  moi, suivre  la lettre les spcifications de la norme bluetooth, mais l'crire en VHDL (au lieu du C, java, ou python), ou partir de la norme est faire un truc driv propritaire (car j'ai peur que la norme bluetooth soit difficile  suivre de A  Z) et surtout je n'ai pas besoin de toutes les couches applicatives que le bluetooth embarque, et a sera galement en VHDL.

Je partirai plus vers le truc driv propritaire, mais j'ai du coup une autre interrogation, si le PC avec lequel je veux communiquer  le bluetooth. Est ce que son priphrique bluetooth reconnaitra le mieux ? Ou est ce que du coup je devrais avoir un soft propritaire sur le PC ?
Je pense notamment pour les phases de dcouverte et de connexion.
Car j'ai cherch des dongles bluetooth qui pourraient rpondre  mon appli, mais j'ai trouv que du Plug and Play, et la je me doute que a va pas fonctionner entre les 2 priphriques car le dongle gre toutes les couches.

Merci d'avance pour vos rponses ^^

A plus

----------


## sgievounet

Hello,

J'ai pas bien compris si la finalit de ton projet est de coder la stack du bluetooth. Ca m'a l'air assez chaud  ::): 

Il existe un petit composant HC-05 utilis sur arduino qui se pilote en UART. Il existe aussi une toolbox sous Matlab pour initialiser une liaison par bluetooth, ca peut tre un point de dpart pour 
mettre au point ta connexion en place, si ce n'est pas encore fait, en mode "developpement".

Le HC-05 doit tre pilotable assez facilement avec une petite machine d'tat en VHDL. Ou tu peux toujours passer par un Microblaze ou NIOS (Altera ou Xilinx).

Concernant le igloo nano, ca m'a l'air super lger pour instancier quelque chose de plus de 100 lignes en VHDL.

----------


## comptet

Merci sgievounet pour ta rponse  ::): 

Pour la finalit de mon projet, je me suis peut tre mal exprim dsol.
Je dois faire un stack bluetooth en VHDL pour le PLD, et un mini soft sur PC pour tester l'envoie et la rception de donnes quelconques (hors voie) vers le PLD.

Concernant le module HC-05, j'en ai dj un, du moins l'quivalent, le bluetooth shield que j'ai dj russi  faire fonctionner avec un arduino uno.
Mais je n'en ai pas appris beaucoup plus car je n'arrive pas  voir ce que contiennent les diffrentes fonctions appeles dans le programme arduino. En effet je n'arrive pas  voir le code source de ces fonctions.  ::(: 

Au niveau hardware PLD je ne m'y connais pas trop, tu pense vraiment que le igloo nano est trop juste pour a ?
Car 100 lignes de VHDL a me semble pas lourd.

A plus

----------


## sgievounet

J'ai peut tre expedi le commentaire un peu vite, ca se trouve ca peut le faire

----------


## albanxiii

Bonjour,




> Mon application bluetooth servira  communiquer entre un PC et le PLD, a sera juste de l'change de donnes asynchrones, pas de vocale, ou de connexions synchrones donc.


En fait, vous avez  faire une liaison srie entre un module Bluetooth et un PC. Il n'y a pas de stack Bluetotoh l dedans.

Et pour en avoir fait une il y a 16 ans (baseband et link controller, en VHDL donc, le reste link manager et au dessus tant fait en soft par quelqu'un d'autre), je peux vous dire que a prend un certain temps  faire.

@+

----------


## cedd70

Dans la plupart du temps la com Bluetooth se fait en liaison UART, tu devrais trouver assez facilement du code sur le net si tu veux pas tembter  crire les trames ncessaires.
tu peut imaginer envoyer un simple char dans un premier temps. ( 8 bits)

Du cot client ( le pc) tu branche un dongle Bluetooth et tu rcuprer les info avec putty, en le connectant  sur le port com qui va bien. tu devrais pouvoir rcuprer ton char.

Le HC-05 le fait trs bien est facilement.

----------


## comptet

Rebonjour tout le monde,

Dsol pour mon temps de rponse, j'ai eu pas mal de boulot  ct qui ne m'a pas fait avancer sur le sujet. ^^

albanxiii 
En faite moi c'est l'inverse par rapport  vous, mon contrleur (CC2650) gre la couche radio, baseband et link manager et moi je dois raliser le code VHDL au dessus pour venir driver le contrleur et grer les donnes envoyes/reus.

J'ai commenc le code pour me faire un driver du contrleur, juste faire un scan des priphriques et raliser une connexion avec l'un d'eux.
Je vois bien la squence  faire, inquiry_scan, create_connection_command_ etc ... Ainsi que les valeurs des diffrentes commandes  envoyer au contrleur bluetooth, c'est pas trs compliqu, les commandes sont listes dans la norme bluetooth. ^^
Mais la ou je butes, c'est le transcrire en VHDL en grer toutes les donnes retour du contrleur, tous les "Event" suite  chaque envoie d'une commande HCI.


cedd70
le HC-05 oui je l'ai vu et il m'a l'air sympa, mais je doit tre un minimum garant du soft, ce que ne me permet pas le HC-05, car  part indiquer le baudrate, le nom du device, le code pin et 2, 3 autres paramtres, je ne pourrais rien contrler


A plus  ::):

----------


## cedd70

Je travail sur le meme BLE en se moment mais pas en FPGA  :;):  
Tiens le code la devrait t'aider 
tu auras juste deux modif a faire :
- gnrer la bonne clk selon de le Baud rate tu trouveras la doc qui va bien sur le net.
- et mettre la bonne valeur  la variable "DATA_WIDTH " => correspondant  8 pour 8 bits ( 1 octets)  ( je ne suis pas sure) 
- (et de 3 finalement) supprimer "SYNC" et mettre  la place un compteur de la mme taille que "DATA_WIDTH"



```

```

----------


## comptet

cedd70
Ton code c'est pour transmettre avec l'uart si je me trompe pas non ? ^^
Pour le module UART, je n'ai pas de problme, je m'en suis cod un, moins light que le tiens mais dans un premier temps a me va comme je ne suis pas un expert en VHDL. ^^

Ce que je voulais dire plutt c'est par exemple pour faire un inquiry scan, j'envoie cette trame  travers l'uart : 0x01,0x00,0x01,0x9E,0x8B,0x00,0x18,0x00

Le contrleur va me rpondre par diffrents events "command status", puis des "inquiry result event" puis un "inquiry complete event" quand le scan sera termin.

A par me faire une montagne de "case" "when" avec chaque cas de figure je ne vois pas trop comment coder. Et je trouve a du coup un peu brouillon comme code non ?

----------


## cedd70

Au tant pour moi j'ai mal compris

Je ne vois pas d'autre soultion qu'un case 
Pour faire un peu plus "propore" tu peux imaginer decouper la trame et controler chaque partie avec un case  ::):

----------


## sgievounet

A mon avis, tu dois apprendre sur le tas le VHDL....
Par postulat, le falling edge ne s'utilise jamais.

Mais l, faire du falling edge et du rising dans le mme process... 

A JAMAIS FAIRE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! OUBLIE!!!!!!!!!!!!!!!!!!!!




```

```

----------

