OpenCores
URL https://opencores.org/ocsvn/raytrac/raytrac/trunk

Subversion Repositories raytrac

[/] [raytrac/] [branches/] [fp_sgdma/] [raytrac.vhd] - Diff between revs 234 and 237

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 234 Rev 237
Line 305... Line 305...
                        sflood_condition <= '1';
                        sflood_condition <= '1';
                else
                else
                        --! Flow Control : La saturaci&oacute;n de la cola de resultados debe parar porque est&aacute; cas&iacute; llena.       
                        --! Flow Control : La saturaci&oacute;n de la cola de resultados debe parar porque est&aacute; cas&iacute; llena.       
                        sflood_condition <= '0';
                        sflood_condition <= '0';
                end if;
                end if;
                if sreg_block(reg_nfetch)(reg_nfetch_high downto 0+mb)/=zero(reg_nfetch_high downto 0+mb) then
 
 
                if sreg_block(reg_nfetch)(reg_nfetch_high downto mb)/=zero(reg_nfetch_high downto mb) then
                        --! Flow Control: Si el n&uacute;mero de descargas pendientes es mayor o igual al max burst length, entonces cargar max burst en el contador.
                        --! Flow Control: Si el n&uacute;mero de descargas pendientes es mayor o igual al max burst length, entonces cargar max burst en el contador.
                        sflood_burstcount <= '1'&zero(mb-1 downto 0);
                        sflood_burstcount <= '1'&zero(mb-1 downto 0);
                else
                else
                        --! Flow Control: Si le n&uacute;mero de descargas pendientes es inferior a Max Burst Count entonces cargar los bits menos significativos del registro de descargas pendientes.
                        --! Flow Control: Si le n&uacute;mero de descargas pendientes es inferior a Max Burst Count entonces cargar los bits menos significativos del registro de descargas pendientes.
                        sflood_burstcount <= '0'&sreg_block(reg_ctrl)(0+mb-1 downto 0);
                        sflood_burstcount <= '0'&sreg_block(reg_nfetch)(mb-1 downto 0);
                end if;
                end if;
 
 
                --! Se debe iniciar una transacci&oacute;n de carga de datos hacia la memoria externa?
                --! Se debe iniciar una transacci&oacute;n de carga de datos hacia la memoria externa?
                if soutb_ae='1' then
                if soutb_ae='1' then
                        --! Flow Control : Cuando se est&eacute; drenando la cola de resultados, si la cola est&aacute; cas&iacute; vac&iaute;a, la longitud del burst ser&aacute;n los bits menos significativos del contador de la cola.  
                        --! Flow Control : Cuando se est&eacute; drenando la cola de resultados, si la cola est&aacute; cas&iacute; vac&iaute;a, la longitud del burst ser&aacute;n los bits menos significativos del contador de la cola.  
Line 473... Line 474...
                                                        end if;
                                                        end if;
                                                end if;
                                                end if;
                                        end if;
                                        end if;
 
 
                                when IDLE =>
                                when IDLE =>
 
 
                                        --! ******************************************************************************************************************************************************                                              
                                        --! ******************************************************************************************************************************************************                                              
                                        --! Programming the pipeline
                                        --! Programming the pipeline
                                        --! ******************************************************************************************************************************************************                                              
                                        --! ******************************************************************************************************************************************************                                              
                                        --! El registro de control en sus campos fetch e irq, es escribile solo cuando estamos en estado IDLE.           
                                        --! El registro de control en sus campos fetch e irq, es escribile solo cuando estamos en estado IDLE.           
                                        if sslave_write='1' then
                                        if sslave_write='1' then
                                                case sslave_address is
                                                case sslave_address is
                                                        when x"0" =>
                                                        when x"0" =>
                                                                --! Solo se permitira escribir en el registro de control si no hay una interrupci&oacute;n activa o si la hay solamente si se esta intentando desactivar la interrupci&acute;n 
                                                                --! Solo se permitira escribir en el registro de control si no hay una interrupci&oacute;n activa o si la hay solamente si se esta intentando desactivar la interrupci&acute;n 
                                                                if sreg_block(reg_ctrl)(reg_ctrl_irq)='0' or sslave_writedata(reg_ctrl_irq)='0' then
                                                                if sreg_block(reg_ctrl)(reg_ctrl_irq)='0' or sslave_writedata(reg_ctrl_irq)='0' then
                                                                        sreg_block(reg_ctrl)(reg_ctrl_irq downto 0) <= sslave_writedata(reg_ctrl_irq downto 0);
                                                                        sreg_block(reg_ctrl)<= sslave_writedata;
                                                                        sreg_block(reg_ctrl)(reg_ctrl_flags_wp-1 downto reg_ctrl_cmb) <= sslave_writedata(reg_ctrl_flags_wp-1 downto reg_ctrl_cmb);
 
                                                                        sreg_block(reg_ctrl)(reg_ctrl_rlsc) <= sslave_writedata(reg_ctrl_rlsc);
 
                                                                        sreg_block(reg_ctrl)(reg_ctrl_ageb downto reg_ctrl_alb) <=sslave_writedata(reg_ctrl_ageb downto reg_ctrl_alb);
 
                                                                end if;
                                                                end if;
                                                        when x"5" => sreg_block(reg_nfetch) <= sslave_writedata;
                                                        when x"5" => sreg_block(reg_nfetch) <= sslave_writedata;
                                                        when x"6" => sreg_block(reg_outputcounter) <= sslave_writedata;
                                                        when x"6" => sreg_block(reg_outputcounter) <= sslave_writedata;
                                                        when x"7" => sreg_block(reg_inputcounter) <= sslave_writedata;
                                                        when x"7" => sreg_block(reg_inputcounter) <= sslave_writedata;
                                                        when x"8" => sreg_block(reg_fetchstart) <= sslave_writedata;
                                                        when x"8" => sreg_block(reg_fetchstart) <= sslave_writedata;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.