summaryrefslogtreecommitdiff
path: root/2004/n/fpga/src
diff options
context:
space:
mode:
authorprot2004-03-09 21:48:27 +0000
committerprot2004-03-09 21:48:27 +0000
commitd1516b387bddec59ad53b611b724f81c4619cfae (patch)
treee8047c14e4c89697ae0d89f4429f9fe254a63999 /2004/n/fpga/src
parentb776c0c39cc3160c190b8ae51640587030851de9 (diff)
?
Diffstat (limited to '2004/n/fpga/src')
-rw-r--r--2004/n/fpga/src/portserie/rxserie.vhd206
1 files changed, 13 insertions, 193 deletions
diff --git a/2004/n/fpga/src/portserie/rxserie.vhd b/2004/n/fpga/src/portserie/rxserie.vhd
index 2b906d5..d53f129 100644
--- a/2004/n/fpga/src/portserie/rxserie.vhd
+++ b/2004/n/fpga/src/portserie/rxserie.vhd
@@ -1,209 +1,29 @@
-- -------------------------------------------
--- Port série RX pour le fpga robot
+-- Adaptateur de bus isa pour le fpga robot
-- -------------------------------------------
---
--- * Prend 3 adresses mémoire :
--- 0 - Rxdata
--- 1 - Flag : (x ! x ! FNE ! FFull ! FL3 ! FL2 ! FL1 ! FL0 )
--- 2 - Config : (x ! x ! x ! On/Off ! FNEIF ! FFIF ! BdR1 ! BdR0)
--- * Mettre le bit On/Off à 1 pour activer la reception
--- * Chaque lecture dans rxdata dépile la donnée de la fifo
--- * Dès que le registre à décalage est plein, il empile la donnée dans la
--- fifo.
--- * Deux bits de stop
--- * Quand la fifo est pleine, met le flag FifoFull (FF) à 1. Chaque front
--- montant du flag FF met à 1 le flag d'interruption FFIF et génère une
--- interruption. Il faut alors mettre à 0 FFIF, qui sera remis à 1 au
--- prochain front montant de FF
--- * Quand il y a au moins une donnée dans la pile, le bit FifiNonEmpty (FNE)
--- est à 1. Quand FNE passe de 0 à 1, le flag FNEIF passe à 1 et génère une
--- interruption. Il faut alors mettre à 0 FNEIF, qui repassera à 1 au
--- prochain front montant de FNE
--- * On peut lire l'état de la pile dans le registre de flags (FifoLevel1/0)
--- * Baudrate disponible :
--- BdR1/0 ! Baudrate
--- 00 ! 9600
--- 01 ! 19200
--- 10 ! 57600
--- 11 ! 115200
-
library ieee;
library ieee.std_logic_1164.all;
-entity rxserie is
- generic (
- -- adresses des différents registres du module.
- A_DATA : T_ADDRESS;
- A_CONFIG : T_ADDRESS;
- A_FLAG : T_ADDRESS
- );
+
+entity adaptisa is
port (
- rst : in std_logic;
- clk : in std_logic;
- rw : in std_logic; -- read (0) / write (1)
- bus_data : inout T_DATA;
- bus_address : in T_ADDRESS;
- masterck: in std_logic;
- rxin: in std_logic;
- FNEIout: out std_logic;
- FFIout: out std_logic
+ bus_address_in : in T_ADDRESS_ISA;
+ cs: std_logic_vector(NB_ADDRESS_REG-1 downto 0);
+ csbank: std_logic_vector(NB_ADDRESS_BANK-1 downto 0);
);
-end rxserie;
-
-architecture rtl of rxserie is
-
-component regIO
- generic(adr : T_ADDRESS);
- port(
- bus_address: in T_ADDRESS;
- bus_data: inout T_DATA;
- input: in T_DATA;
- output: out T_DATA;
- rw: in std_logic;
- load: in std_logic;
- ck: in std_logic;
- rst: in std_logic
- );
-end component;
-
-component fifo is
- port(
- data_in: in T_DATA;
- data_out: out T_DATA;
- ck: in std_logic;
- ck_in: in std_logic;
- ck_out: in std_logic;
- flags: out std_logic_vector(5 downto 0);
- purge: in std_logic
- );
-end component;
-
-component receiver
- port(
- data_in: in std_logic_vector(7 downto 0);
- ck: in std_logic;
- flag: out std_logic;
- txout: out std_logic
- );
-end component;
-
-component clockgene
- port(
- ckin: in std_logic;
- ckout: out std_logic;
- param: in std_logic_vector(1 downto 0)
- );
-end component;
-
-component decoder
- generic(adr : T_ADDRESS);
- port(
- bus_address: in T_DATA;
- cs: out std_logic
- );
-end component;
+end adaptisa;
+architecture rtl of adaptisa is
+begin
---signal fifoEmpty: std_logic;
---signal fifoFull: std_logic;
---signal fifoLI1: std_logic;
---signal fifoLI0: std_logic;
---signal BdR1: std_logic;
---signal BdR0: std_logic;
-signal purge: std_logic;
-signal geneck: std_logic;
-signal txck: std_logic;
-signal busck: std_logic;
-signal adrbus: T_DATA;
-signal databus: T_DATA;
-signal rw: std_logic;
-signal rst: std_logic;
-signal txdata: std_logic;
-signal txempty: std_logic;
-signal csFifo: std_logic;
-signal fifockin: std_logic;
-signal fifockout: std_logic;
-
-FIFO1: fifo
- port map(
- data_in=>databus,
- data_out=>txdata,
- ck_in=>fifockin,
- ck_out=>fifockout
- f0=>fifoEmpty,
- f1=>fifoLI0,
- f2=>fifoLI1,
- f3=>fifoFull,
- purge=>confreg(3)
- );
-
-fifockin<=csFifo and not rw and busck;
-fifockout<=txempty; -- à vérifier !!! Cette ligne est valable pour
- -- txempty=1 quand le tx est vide
+process()
+begin
-TX1 : transmitter
- port map(
- data_in=>txdata,
- ck=>txck,
- flag=>txempty,
- txout=>txout,
- );
-
-CLOCK1 : clockgene
- port map(
- ck_in=>geneck,
- ck_out=>txck,
- param=>confreg(1 downto 0)
- );
-geneck<=confreg(4) and masterck; -- On/Off et masterck
-
+end process;
--- Config : (x ! x ! x ! On/Off ! Purge ! IntEn ! BdR1 ! BdR0)
-RCONF : registre
- generic map(adr=>adr+1)
- port map(
- adrbus=>adrbus,
- databus=>databus,
- input=>(others => '0'),
- output=>confreg,
- rw=>rw,
- load=>'0',
- ck=>busck,
- rst=>'0'
- );
-
--- Flag : (x ! x ! x ! x ! Empty ! Full/Int ! FLI1 ! FLI0)
-RFLAG : registre
- generic map(adr=>adr+2)
- port map(
- adrbus=>adrbus,
- databus=>databus,
- input=>flagreg,
- output=>open,
- rw=>rw,
- load=>'1',
- ck=>busck,
- rst=>'0'
- );
-
-flagreg(7 downto 3)<=(others => '0');
-flagreg(3)<=txempty;
-flagreg(2)<=fifoFull;
-flagreg(1)<=fifoLI1;
-flagreg(0)<=fifoLI0;
-
--- la sortie intout est active si la pile est pleine ET si le bit de conf est
--- activé
-intout<=fifoFull and confreg(2); -- IntEn et fifoFull
-
-DECOD : decoder
- generic map(adr=>adr)
- port map(
- adrbus=>adrbus,
- cs=>csFifo
- );
end rtl;
+