Ignore:
Timestamp:
Dec 20, 2013, 7:55:55 PM (11 years ago)
Author:
rolagamo
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • PROJECT_CORE_MPI/CORE_MPI/BRANCHES/v1.00/PE.vhd

    r64 r70  
    11----------------------------------------------------------------------------------
    22-- Company:
    3 -- Engineer:
     3-- Engineer: GAMOM Roland Christian
    44--
    55-- Create Date:    21:20:54 07/16/2012
     
    99-- Target Devices:
    1010-- Tool versions:
    11 -- Description:
    12 --
     11-- Description: Ce module permet d'encapsuler une tâche matérielle
     12-- et lui donne la possiblité de communiquer à l'aide des fonctions MPI-2 RMA
    1313-- Dependencies:
    1414--
     
    4040           clk : in  STD_LOGIC;
    4141           reset : in  STD_LOGIC;
     42                          CE : in STD_LOGIC; -- Active le  PE après sa synthèse
    4243           Core_RAM_Data_Out : out  STD_LOGIC_VECTOR (Word-1 downto 0);
    4344           Core_RAM_Data_In : in  STD_LOGIC_VECTOR (Word-1 downto 0);
     
    6667                );
    6768        END COMPONENT;
     69COMPONENT HT_process is
     70                generic (Task_Id : natural);
     71    Port ( clk : in  STD_LOGIC;
     72           reset : in  STD_LOGIC;
     73                          en : in std_logic; -- active la tâche
     74           Interf_i : in  core_i; --signaux pour l'interface I
     75           Interf_o : out  core_o; --signaux pour l'interface IO
     76           mem_i : in typ_dpram_i; -- signaux pour l'accès à la mémoire
     77           mem_o : out typ_dpram_o -- signaux pour l'accès à la mémoire
     78                          );
     79end COMPONENT HT_process;
    6880COMPONENT Hold_FSM is
     81       
    6982    Port ( Hold_Req : in  STD_LOGIC;
    7083           Ram_busy : in  STD_LOGIC;
     
    7689--données du programme PE
    7790           --signaux pour l'interconnexionsignal datain :std_logic_vector(word-1 downto 0):= (others => '0');
    78         signal ram_we ,ram_ena,ram_enb,ramsel: std_logic:='0';
     91        signal ram_we ,ram_ena,ram_enb,ramsel_i: std_logic:='0';
    7992        signal pe_ram_we ,pe_ram_ena,pe_ram_enb: std_logic;
    8093        signal pe_instr_en,pe_hold_ack: std_logic:='0';
     
    8497        signal pe_ram_addra,pe_ram_addrb :std_logic_vector(ADRLEN-1 downto 0);
    8598        signal sram : typ_dpram;
     99        signal clk_ht : std_logic;
    86100        signal MyGroup:mpi_group;
    87101        signal MyWin : mpi_win;
     
    93107        signal Lib_instr_ack : std_logic; -- l'instruction est copiée dans le tampon FIFO
    94108        signal Lib_Init : std_logic; -- l'initialisation est terminée
     109        signal Lib_Enable : std_logic;
    95110        signal Hold_Ack : std_logic;
     111        signal en_task : std_logic;
    96112 --signaux pour la gestion de la MAE
    97113 type typ_mae is (start,Fillmem,NextFill,InitApp,GetRank,WInCreate,WinStart, putdata,getdata,WinCompleted,finalize,st_timeout);
     
    107123Inst_RAM_v: RAM_v generic map(width=>word,size=>ADRLEN)
    108124        PORT MAP(
    109                 clka =>clk,
    110                 clkb => clk,
     125                clka =>clk ,
     126                clkb => clk ,
    111127                wea => ram_we,
    112128                ena => ram_ena,
     
    117133                dob => ram_do
    118134        );
     135        HT_task:HT_process generic map(Task_id =>DestId)
     136        port map (
     137        clk=>clk_ht,
     138        reset=>reset,
     139        en=>en_task,
     140   Interf_i =>Libr.i,
     141   Interf_o=>Libr.o,
     142  mem_i =>sram.i,
     143   mem_o =>sram.o       );
     144
    119145--================================================================
    120146        --MUX de la RAM
    121147                               
    122 Ram_mux: process (ramsel,pe_ram_addra,pe_ram_addrb,Core_ram_address_rd,Core_ram_address_wr,
     148Ram_mux: process (clk,ramsel_i,pe_ram_addra,pe_ram_addrb,Core_ram_address_rd,Core_ram_address_wr,
    123149                                                Core_ram_en,Core_ram_we,Core_ram_data_in,pe_ram_ena,pe_ram_enb,Ram_do,
    124150                                                Pe_ram_din,Pe_ram_we    )
    125151 begin                         
    126  case ramsel is
     152 case ramsel_i is
    127153       
    128154        when '1' =>
     
    133159                ram_we<= Core_ram_we;
    134160                ram_din <= Core_ram_data_in;
    135                 pe_ram_do<=(others=>'Z');
     161                pe_ram_do<=(others=>'-');
    136162                Core_ram_data_out<=ram_do;
    137163               
     
    143169                ram_we<= pe_ram_we;
    144170                ram_din <=pe_ram_din;
    145                 Core_ram_data_out<=(others=>'Z');
     171                Core_ram_data_out<=(others=>'-');
    146172                pe_ram_do<=ram_do;
    147173end case ;
     
    153179--=== !!!!! attention la suppression de la ligne ci-dessous empêche ce
    154180-- composant de bien fonctionner !!! !!!!!!!!!!!!!!!!!!!!!!!
    155 instruction<=std_logic_vector(to_unsigned(Core_upper_adr,8));
     181--instruction<=std_logic_vector(to_unsigned(Core_upper_adr,8));
    156182
    157183dpid<=dpid_i;
    158 
     184en_task<= CE or Lib_enable; --l'activation d'une HT peut être directe ou commandée
    159185Lib_Instr_ack<=Core_Pushout(0); --l'instruction a été copié
    160186Lib_init<=Core_Pushout(4); -- Initialized
     187Lib_Enable<=Core_Pushout(6);-- HT activée par la Librairie.
     188
     189horloge_ht:process (reset,ce,lib_enable,clk)
     190begin
     191if reset='1' then
     192clk_ht<='0';
     193else
     194if ce='1' then
     195clk_ht<=clk;
     196elsif lib_enable='1' then
     197clk_ht<=clk;
     198else
     199clk_ht<='0';
     200end if;
     201end if;
     202end process horloge_ht;
    161203
    162204Hold1: Hold_fsm port map (
    163 clk=>clk,
     205clk=>clk ,
    164206reset =>reset,
    165 Ram_Busy=>Libr.membusy,
     207Ram_Busy=>Libr.O.membusy,
    166208Hold_Ack=>Hold_Ack,
    167209Hold_req =>Core_Hold_Req,
    168 RamSel => RamSel);
     210RamSel => RamSel_i);
    169211Core_Hold_Ack<=Hold_Ack;
    170212
    171 
     213--================RAM signals ======================                                   
     214sram.I.data_out<=PE_ram_do;
     215pe_Ram_addra<=sram.O.addr_wr;
     216pe_Ram_addrb<=sram.O.addr_rd ;
     217PE_Ram_we<=sram.O.we;
     218PE_Ram_ena<=sram.O.ena;
     219PE_Ram_enb<=sram.O.enb;
     220PE_ram_din<=sram.O.data_in;
     221--==========MPI HCL signals ============================
     222
     223affect:process (clk,Core_hold_req,RamSel_i,Core_pushout,Libr)
     224begin
     225        --if (clk'event and clk='1') then
     226Instruction<=Libr.O.Instruction;                       
     227        Ram_busy<=Libr.O.membusy;
     228PE_Instr_EN<=Libr.O.instr_en;
     229Libr.I.Instr_ack<=Core_pushout(0);
     230Libr.I.InitOk<=Core_pushout(4);
     231Libr.I.Spawned<=Core_pushout(6);
     232Libr.I.Hold_Req<=Core_Hold_req;
     233--Libr.I.Hold_Ack<=Hold_Ack;
     234Libr.I.RamSel<=RamSel_i;               
     235--end if;
     236end process affect;
    172237--=======================================================================
    173238--MAE du PE
    174239--=======================================================================
    175240
    176  pPutGet:process(clk,Core_Pushout,Core_Hold_req,PE_hold_Ack,RamSel,PE_Ram_do)
    177241 
    178         constant DATAPTR : natural :=256;
    179         variable bfill,destrank,pid,mport : natural range 0 to 15;
    180         variable fsrc,ret : natural range 0 to 15:=0;
    181         variable timeout,ct,dlen : natural range 0 to 255;
    182         variable adrToset,SrcAdr,DestAdr : std_logic_vector(ADRLEN-1 downto 0);
    183         variable mywin : Mpi_win;
    184         variable iack : std_logic:='0';
    185         variable  adresse,adresse_rd :natural range 0 to 65536;
    186         variable status_reg,config_reg :std_logic_vector(Word-1 downto 0):=(others=>'0');
    187         --=======================================================
    188         --variables pour la création du fichier de résultats
    189                 -- synthesis translate_off
    190                 type char_file is file of character;
    191         file f: text;
    192         variable status :file_open_status ;
    193         variable char_count: integer range 0 to 65536 := 0;
    194                   variable str: string (1 to 79) ;
    195                   variable L: line;
    196                   variable fopened: std_logic:='0';
    197                  -- synthesis translate_on
    198 --======================================================
    199         begin
    200         --=== Partie combinatoire du process ===================================
    201                        
    202         --=== Fin de la partie combinatoire du process ==========================       
    203                
    204                    
    205            
    206         --end loop;
    207        
    208         if (clk'event and clk='1') then
    209                         Libr.Instr_ack<=Core_pushout(0);
    210                         Libr.InitOk<=Core_pushout(4);
    211                         Libr.Hold_Req<=Core_Hold_req;
    212                         Libr.Hold_Ack<=Hold_Ack;
    213                         Libr.RamSel<=RamSel;
    214                         sram.data_out<=PE_ram_do;
    215                        
    216                 if reset='1' then
    217                                         RunState<=start;
    218                                        
    219                 else
    220                        
    221                         Libr.Instr_ack<=Core_pushout(0);
    222                         Libr.InitOk<=Core_pushout(4);
    223                         Libr.Hold_Req<=Core_Hold_req;
    224                         Libr.Hold_Ack<=Hold_Ack;
    225                         Libr.RamSel<=RamSel;
    226                         sram.data_out<=PE_ram_do;
    227                        
    228                         case  RunState is
    229                         when start =>
    230                                 Dcount<=0;
    231                                 if bfill=0 then -- si le nombre de bloc de mémoire remplis est vide
    232                                                 RunState<=Fillmem;
    233                                  end if;
    234                                  Ram_busy<='0';
    235                                  Libr.MemBusy<='0';
    236                                  PE_Instr_En<='0';
    237                                 iack:='0';
    238                                 adresse:=DATAPTR;
    239                                
    240                                 adresse_rd:=0;
    241                                 timeout:=0;
    242                                 dcount<=0;
    243                         -- synthesis translate_off
    244                         if fopened='0' then
    245                         file_open(status,f, integer'image(destid) & "test_file0.txt", APPEND_MODE);
    246         --while not endfile(c_file_handle) loop
    247                         --end if;
    248                
    249                                 --write (l,string'("Ce fichier contient des resultats de la simulation ; ;" & " started at time ; " & time'image(now)));
    250                                 --report l.all;
    251            -- writeline (f, l) ;
    252                                 fopened:='1';
    253                         end if;
    254                          -- synthesis translate_on
    255                          when Fillmem =>
    256                                 if Ramsel='0' then
    257                                        
    258                                        
    259                                        
    260                                         PE_Ram_din<=std_logic_vector(to_unsigned(dcount,8)); -- x"0f";
    261                                         PE_Instr_En<='0';
    262                                         dcount<=dcount+1;
    263                                        
    264                                         if dcount=100 then
    265                                                  bfill:=bfill+1;
    266                                                  
    267                                                  if bfill=4 then
    268                                                   RunState<=InitApp;
    269                                                  else
    270                                                         RunState<=nextfill;
    271                                                 end if;
    272                                         else
    273                                                 adresse:=adresse+1;
    274                                                 RunState<=Fillmem;
    275                                         end if;
    276                         else -- attente de la libéraion de la mémoire
    277                                 timeout:=timeout+1;
    278                                           if timeout=100 then
    279                                                 RunState<=st_timeout;
    280                                           end if;
    281                                                        
    282                         end if;
    283                 when nextfill  =>   --prépare le prochain bloc mémoire qui sera rempli
    284                                 adresse:=200*bfill+1;
    285                                 dcount<=0;
    286                                 ct:=0;
    287                                 RunState<=Fillmem;
    288                                 PE_Instr_En<='0';
    289                 when InitApp =>
    290                                 --code pour Init
    291                                 dlen:=139;
    292                                 if ct=0 then
    293                                 -- synthesis translate_off
    294                                 write (l,string'("Dlen; ;INIT1 " &  integer'image(Dlen)& "; " & image(MyRank) & "; started at ; " & time'image(now)));
    295                                
    296                                 report l.all;
    297             writeline (f, l) ;
    298                                 -- synthesis translate_on
    299                                 end if;
    300                                 pMPI_Init(ct,Libr,Clk,SRam);
    301                                 PE_Instr_EN<=Libr.instr_en;
    302                                 adresse:=to_integer(unsigned(sram.addr_wr));
    303                                 adresse_rd:=to_integer(unsigned(sram.addr_rd));
    304                                 PE_ram_din<=sram.data_in;
    305                                 Ram_busy<=Libr.membusy;
    306                                 --if Libr.InitOk='1' then
    307                                 if ct=0 then
    308                                         RunState<=GetRank;
    309                                         -- synthesis translate_off
    310                                         write (l,string'("Dlen; ;INIT2 " &  integer'image(Dlen) & ";" & image(MyRank) & ";  ended at  ; " & time'image(now)));
    311                                         report l.all;
    312                                         writeline (f, l) ; 
    313                                         -- synthesis translate_on
    314                                 end if;
    315                                
    316                
    317                
    318                 when GetRank =>
    319                 if ct=0 then
    320                                 -- synthesis translate_off
    321                                 write (l,string'("Dlen; ;Rank1 " &  integer'image(Dlen) & "; ; started  ; " & time'image(now)));
    322                                 report l.all;
    323             writeline (f, l) ; 
    324                                 -- synthesis translate_on
    325                         end if;
    326                         pMPI_Comm_rank(ct,Libr,sram,MPI_COMM_WORLD,MyRank);
    327                         adresse_rd:=to_integer(unsigned(sram.addr_rd));
    328                         Ram_busy<=Libr.membusy;
    329                        
    330                         if ct=0 then
    331                                 RunState<=WinStart;
    332                                 -- synthesis translate_off
    333                                 write (l,string'("Dlen; ;Rank2 " &  integer'image(Dlen) & ";" & image(MyRank) & "; ended at  ; " & time'image(now)));
    334                                 report l.all;
    335             writeline (f, l) ;
    336                                 -- synthesis translate_on
    337                         end if;
    338                        
    339                
    340                 when Wincreate =>
    341                
    342                 when WinStart =>
    343                         if ct=0 then
    344                                 -- synthesis translate_off
    345                                 write (l,string'("Dlen; ;WStart1 " &  integer'image(Dlen) & "; ; started  ; " & time'image(now)));
    346                                 report l.all;
    347             writeline (f, l) ; 
    348                                 -- synthesis translate_on
    349                         end if;
    350                                 pMPI_Win_start(ct,Libr,sram,MyGroup,0,MyWin);
    351                                         adresse:=to_integer(unsigned(sram.addr_wr));
    352                                         adresse_rd:=to_integer(unsigned(sram.addr_rd));
    353                                         --PE_Instr_EN<=Libr.instr_en;
    354                                         PE_ram_din<=sram.data_in;
    355                                         Ram_busy<=Libr.membusy;
    356                                         dcount<=ct;
    357                        
    358                         if ct=0 then
    359                                 RunState<=PutData;
    360                                 -- synthesis translate_off
    361                                 write (l,string'("Dlen; ;WStart2 " &  integer'image(Dlen) & ";" & image(MyRank) & "; ended at  ; " & time'image(now)));
    362                                 report l.all;
    363             writeline (f, l) ;
    364                                 -- synthesis translate_on
    365                         end if;
    366                        
    367                
    368                 when putdata => --construire le packet pour le Put
    369                                
    370                                         --dlen:=251; ---
    371                                         if ct=0 then
    372                                         -- synthesis translate_off
    373                                         write (l,string'("Dlen;" & integer'image(dlen) & ";PUT1 " & integer'image(dlen) & ";" & image(MyRank) & "; started at ; " & time'image(now)));
    374                                         report l.all;
    375                                         writeline (f, l) ;
    376                                         -- synthesis translate_on
    377                                         end if;
    378                                         if unsigned(MyRank) = 0 then
    379                                                 Destrank:=2;
    380                                                
    381                                         elsif unsigned(MyRank) = 1 then
    382                                                 Destrank:=0;
    383                                         elsif unsigned(MyRank) = 2 then
    384                                                 Destrank:=1;
    385                                         elsif unsigned(MyRank) = 3 then
    386                                                 Destrank:=2;
    387                                         else
    388                                                 DestRank:=0;
    389                                         end if;
    390                                          
    391                                         SrcAdr:=std_logic_vector(to_unsigned(DATAPTR,ADRLEN));
    392                                         DestAdr:=X"0340";
    393                                         pMPI_put(ct,Libr,Clk,Sram,SrcAdr,Dlen,MPI_int,destrank,DestAdr,Dlen,Mpi_int,Default_win);
    394                                        
    395                                         adresse:=to_integer(unsigned(sram.addr_wr));
    396                                         adresse_rd:=to_integer(unsigned(sram.addr_rd));
    397                                         PE_Instr_EN<=Libr.instr_en;
    398                                         PE_ram_din<=sram.data_in;
    399                                         Ram_busy<=Libr.membusy;
    400                                         dcount<=ct;
    401                                        
    402                                         if ct=0 then
    403                                                 RunState<=GetData;
    404                                         -- synthesis translate_off
    405                                         report "Put of Process n°; " & image(MyRank) & "; ended at ; " & time'image(now);
    406                                         write (l,string'("Dlen;" & integer'image(dlen) & ";PUT2 " & integer'image(dlen) & ";" & image(MyRank) & "; ended at time ; " & time'image(now)));
    407                                         report l.all;
    408                                         writeline (f, l) ;
    409                                         -- synthesis translate_on
    410                                         end if;
    411                                        
    412                                
    413                         when getdata =>   --positionnement du mot de longueur des données
    414                                         --dlen:=251; ---
    415                                         if ct=0 then
    416                                         -- synthesis translate_off
    417                                         write (l,string'("Dlen;" & integer'image(dlen) & ";GET1; " & image(MyRank) & "; started at ; " & time'image(now)));
    418                                         report l.all;
    419                                         writeline (f, l) ;
    420                                         -- synthesis translate_on
    421                                         end if;
    422                                        
    423                                         SrcAdr:=X"0120";
    424                                         DestAdr:=X"1400";
    425                                         if unsigned(MyRank) /= 2 then
    426                                                 pMPI_GET(ct,Libr,Clk,Sram,SrcAdr,Dlen,MPI_int,destrank,DestAdr,Dlen,Mpi_int,Default_win);
    427                                         else
    428                                                 RunState<=wincompleted;
    429                                         end if;
    430                                         adresse:=to_integer(unsigned(sram.addr_wr));
    431                                         adresse_rd:=to_integer(unsigned(sram.addr_rd));
    432                                         PE_Instr_EN<=Libr.instr_en;
    433                                         PE_ram_din<=sram.data_in;
    434                                         Ram_busy<=Libr.membusy;
    435                                         dcount<=ct;
    436                                        
    437                                         if ct=0 then
    438                                                 RunState<=wincompleted;
    439                                                 -- synthesis translate_off
    440                                                 assert ct/=0 report "GET_END " & integer'image(destrank)
    441                                                                 severity Warning ;
    442                                                 write (l,string'("Dlen ;" & integer'image(dlen) & ";GET2 " & integer'image(dlen) & ";" & image(MyRank) & "; ended at ; " & time'image(now)));
    443                                         report l.all;
    444                                        
    445                                         writeline (f, l) ;
    446                                                 -- synthesis translate_on
    447                                         end if;
    448                                
    449                                 when WinCompleted =>
    450                                 if ct=0 then
    451                                                 -- synthesis translate_off
    452                                                 write (l,string'("Dlen ;" & integer'image(dlen) & ";WAIT1 " & integer'image(dlen) & ";" & image(MyRank) & "; started at ; " & time'image(now)));
    453                                                 report l.all;
    454                                                 writeline (f, l) ;
    455                                                 -- synthesis translate_on
    456                                         end if;
    457                                          pMPI_Win_wait(ct,Libr,sram,MyWin );
    458                                          adresse:=to_integer(unsigned(sram.addr_wr));
    459                                         adresse_rd:=to_integer(unsigned(sram.addr_rd));
    460                                         Ram_busy<=Libr.membusy;
    461                                         if ct=0 then
    462                                                 RunState<=finalize;     
    463                                                 -- synthesis translate_off
    464                                                 write (l,string'("Dlen ;" & integer'image(dlen) & ";WAIT2 " & integer'image(dlen) & ";" & image(MyRank) & "; ended at ; " & time'image(now)));
    465                                                 report l.all;
    466                                                 writeline (f, l) ;
    467                                                 -- synthesis translate_on
    468                                                
    469                                         end if;   
    470                                        
    471                                                
    472                         when finalize =>
    473                                         if ct=0 then
    474                                                 -- synthesis translate_off
    475                                                 write (l,string'("Dlen ;" & integer'image(dlen) & ";FINALIZE1 " & integer'image(dlen) & ";" & image(MyRank) & "; started at ; " & time'image(now)));
    476                                                 report l.all;
    477                                                 writeline (f, l) ;
    478                                                 -- synthesis translate_on
    479                                         end if;
    480                                          
    481                                         if ct=0 then
    482                                                 RunState<=start;       
    483                                                 -- synthesis translate_off
    484                                                 write (l,string'("Dlen ;" & integer'image(dlen) & ";FINALIZE2 " & integer'image(dlen) & ";" & image(MyRank) & "; ended at ; " & time'image(now)));
    485                                                 report l.all;
    486                                                 writeline (f, l) ;
    487                                                 file_close(f); 
    488                                                 -- synthesis translate_on
    489                                         end if;   
    490                
    491                         when st_timeout =>
    492                          
    493                           --if ram_busy='1' then
    494                                  RunState<=start;
    495                           --end if
    496                
    497                           RunState<=start;
    498                         end case;
    499                         pe_Ram_addra<=STD_LOGIC_VECTOR(to_unsigned(adresse,16));
    500                         pe_Ram_addrb<=STD_LOGIC_VECTOR(to_unsigned(adresse_rd,16));
    501                 end if;
    502         end if;
    503 
    504   end process pPutGet; 
    505 
    506 majPutGet:process (RunState,pe_ram_do,sram,Lib_Init)
    507 
    508         begin
    509                         case  RunState is
    510                         when start =>
    511                        
    512                                    PE_Ram_we<='0';
    513                                         PE_Ram_ena<='0';
    514                                         PE_Ram_enb<='0';
    515                                         --PE_Instr_En<='0';
    516 
    517                  when fillmem =>
    518                                    PE_Ram_we<='1';
    519                                         PE_Ram_ena<='1';
    520                                        
    521                                         PE_Ram_enb<='0';
    522                                         --PE_Instr_En<='0';
    523                  when nextfill =>
    524                                         PE_Ram_we<='1';
    525                                         PE_Ram_ena<='1';
    526                                         PE_Ram_enb<='0';
    527                                        
    528             when InitApp =>
    529 --                                 PE_Ram_we<='1';
    530 --                                      PE_Ram_ena<='1';
    531 --                                      PE_Ram_enb<='0';
    532                                         PE_Ram_we<=sram.we;
    533                                         PE_Ram_ena<=sram.ena;
    534                                         PE_Ram_enb<=sram.enb;
    535                                        
    536                                                        
    537                         when GetRank =>
    538 
    539                                         PE_Ram_we<=sram.we;
    540                                         PE_Ram_ena<=sram.ena;
    541                                         PE_Ram_enb<=sram.enb;
    542                         when WinCreate =>
    543                                        
    544                                         PE_Ram_we<=sram.we;
    545                                         PE_Ram_ena<=sram.ena;
    546                                         PE_Ram_enb<=sram.enb;
    547 
    548                 when WinStart =>
    549                                        
    550                                         PE_Ram_we<=sram.we;
    551                                         PE_Ram_ena<=sram.ena;
    552                                         PE_Ram_enb<=sram.enb;
    553                           --positionnement du mot de longueur des données
    554                                
    555                                
    556                         when putdata =>
    557                                         srcadr0<=X"00";
    558                                         srcadr1<=X"01";
    559                                         destadr0<=X"00";
    560                                         destadr1<=X"02";
    561                                         PE_Ram_we<=sram.we;
    562                                         PE_Ram_ena<=sram.ena;
    563                                         PE_Ram_enb<=sram.enb;
    564                
    565                         when getdata =>
    566                                 PE_Ram_we<=sram.we;
    567                                 PE_Ram_ena<=sram.ena;
    568                                 PE_Ram_enb<=sram.enb;
    569                                
    570                         when Wincompleted =>                           
    571                                         PE_Ram_we<=sram.we;
    572                                         PE_Ram_ena<=sram.ena;
    573                                         PE_Ram_enb<=sram.enb;
    574                                
    575                         when finalize =>
    576                        
    577                                    PE_Ram_we<='0';
    578                                         PE_Ram_ena<='0';
    579                                         PE_Ram_enb<='0';
    580                                
    581                        
    582                         when st_timeout =>
    583                                   PE_Ram_we<='0';
    584                                         PE_Ram_ena<='0';
    585                                         PE_Ram_enb<='0';
    586                                        
    587                          
    588                         end case;
    589                
    590 end process majPutGet ;
    591242end Behavioral;
    592243
Note: See TracChangeset for help on using the changeset viewer.