IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VHDL Discussion :

Bluetooth et vhdl


Sujet :

VHDL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Bluetooth et vhdl
    Bonjour tout le monde.

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

    Je dois réaliser 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 sélectionné le contrôleur 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 grâce à une liaison UART.

    Mon application bluetooth servira à communiquer entre un PC et le PLD, ça sera juste de l'échange de données 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 spécifications 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 dérivé propriétaire (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 dérivé propriétaire, mais j'ai du coup une autre interrogation, si le PC avec lequel je veux communiquer à le bluetooth. Est ce que son périphérique bluetooth reconnaitra le mieux ? Ou est ce que du coup je devrais avoir un soft propriétaire sur le PC ?
    Je pense notamment pour les phases de découverte et de connexion.
    Car j'ai cherché des dongles bluetooth qui pourraient répondre à mon appli, mais j'ai trouvé que du Plug and Play, et la je me doute que ça va pas fonctionner entre les 2 périphériques car le dongle gère toutes les couches.

    Merci d'avance pour vos réponses ^^

    A plus

  2. #2
    Nouveau membre du Club
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Avril 2008
    Messages : 28
    Points : 32
    Points
    32
    Par défaut hc-05
    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 départ 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 léger pour instancier quelque chose de plus de 100 lignes en VHDL.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Bluetooth et VHDL
    Merci sgievounet pour ta réponse

    Pour la finalité de mon projet, je me suis peut être mal exprimé désolé.
    Je dois faire un stack bluetooth en VHDL pour le PLD, et un mini soft sur PC pour tester l'envoie et la réception de données quelconques (hors voie) vers le PLD.

    Concernant le module HC-05, j'en ai déjà un, du moins l'équivalent, le bluetooth shield que j'ai déjà réussi à 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 différentes fonctions appelées 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

  4. #4
    Nouveau membre du Club
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Avril 2008
    Messages : 28
    Points : 32
    Points
    32
    Par défaut suite
    J'ai peut être expedié le commentaire un peu vite, ca se trouve ca peut le faire

  5. #5
    Futur Membre du Club
    Homme Profil pro
    ingénieur R&D
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Citation Envoyé par comptet Voir le message
    Mon application bluetooth servira à communiquer entre un PC et le PLD, ça sera juste de l'échange de données asynchrones, pas de vocale, ou de connexions synchrones donc.
    En fait, vous avez à faire une liaison série 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.

    @+

  6. #6
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut
    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 t’embêter à écrire les trames nécessaires.
    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 récupérer les info avec putty, en le connectant sur le port com qui va bien. tu devrais pouvoir récupérer ton char.

    Le HC-05 le fait très bien est facilement.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Rebonjour tout le monde,

    Désolé pour mon temps de réponse, j'ai eu pas mal de boulot à côté qui ne m'a pas fait avancer sur le sujet. ^^

    albanxiii
    En faite moi c'est l'inverse par rapport à vous, mon contrôleur (CC2650) gère la couche radio, baseband et link manager et moi je dois réaliser le code VHDL au dessus pour venir driver le contrôleur et gérer les données envoyées/reçus.

    J'ai commencé le code pour me faire un driver du contrôleur, juste faire un scan des périphériques et réaliser une connexion avec l'un d'eux.
    Je vois bien la séquence à faire, inquiry_scan, create_connection_command_ etc ... Ainsi que les valeurs des différentes commandes à envoyer au contrôleur bluetooth, c'est pas très compliqué, les commandes sont listées dans la norme bluetooth. ^^
    Mais la ou je butes, c'est le transcrire en VHDL en gérer toutes les données retour du contrôleur, 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 paramètres, je ne pourrais rien contrôler


    A plus

  8. #8
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut
    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 :
    - générer 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 même taille que "DATA_WIDTH"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    library ieee;
    	use ieee.std_logic_1164.all;
    	use ieee.numeric_std.all;
     
    entity toto is
     
    	generic
    	(
    		DATA_WIDTH : natural := 16  --16
    	);
     
    	port 
    	(
    		reset 		: in std_logic;
    		SDIN	  	: in std_logic;
    		SDOUT		: out  std_logic;
    		SCLK	  	: in std_logic;
    		SYNC 		: in std_logic;
     
    		data_in		: in std_logic_vector((DATA_WIDTH-1) downto 0);
    		data_out	: out std_logic_vector((DATA_WIDTH-1) downto 0)
    	);
     
    end entity;
     
    architecture arch of toto is
     
    	signal 	registre : std_logic_vector ((DATA_WIDTH-1)downto 0);
    	signal	sync_tmp	:	std_logic:='0';
    	begin
     
    	process (SCLK,SDIN,sync)
    		variable   	cnt	  	:  integer range 0 to (DATA_WIDTH)*2:=0;
    		variable 	data_n 	:  integer range 0 to (DATA_WIDTH-1) :=(DATA_WIDTH-1);
    		variable 	data_tmp	:	std_logic_vector((DATA_WIDTH-1) downto 0);
    		begin
     
    		if reset = '1' then
     
    		else
    			--RECEIVE
    			if falling_edge(SCLK) then
    				if SYNC = '0' then
    					data_tmp(data_n):=SDIN;
    					data_n := data_n - 1;
    				else
    					data_n :=(DATA_WIDTH-1);
    					data_out<= data_tmp;
    				end if;
    			end if;
    			--SENDING
    			if rising_edge(SCLK) then
    				if SYNC = '1' then
    					registre <= data_in;
    				else 
    					registre <= registre((DATA_WIDTH -2) downto 0) & '0'; --Shift register--
    				end if;
    			end if;
    		end if;
     
    		end process;
     
    	SDOUT	<= registre(DATA_WIDTH - 1);
    end arch;

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    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 problème, 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 plutôt 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 contrôleur va me répondre par différents 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 ?

  10. #10
    Membre actif Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Points : 263
    Points
    263
    Par défaut
    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

  11. #11
    Nouveau membre du Club
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Avril 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Avril 2008
    Messages : 28
    Points : 32
    Points
    32
    Par défaut jamais
    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 même process...

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


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if falling_edge(SCLK) then
            -- BLABLABALA
    end if;
    --SENDING
    if rising_edge(SCLK) then
             -- BLABLABLA  .............................
    end if;

Discussions similaires

  1. [Delphi 3] Bluetooth avec Tapdcomport
    Par woow dans le forum Composants VCL
    Réponses: 4
    Dernier message: 29/05/2019, 23h01
  2. [Info] Bluetooth
    Par BillyKimber dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 30/08/2005, 12h53
  3. Programmation du port Infrarouge et du Bluetooth
    Par nabil_abada dans le forum Java ME
    Réponses: 3
    Dernier message: 12/08/2005, 09h33
  4. Appli Bluetooth
    Par Ferllings dans le forum C++
    Réponses: 2
    Dernier message: 15/03/2005, 13h16
  5. Réponses: 1
    Dernier message: 17/11/2004, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo