OSDN Git Service

add GPL license on VHDL file. change motionJPEG file(GFDL).
[fpga-leon-mjpeg/leon-mjpeg.git] / grlib-gpl-1.0.22-b4095 / lib / kuri / mjpeg / yccmemcont.vhd.bak
diff --git a/grlib-gpl-1.0.22-b4095/lib/kuri/mjpeg/yccmemcont.vhd.bak b/grlib-gpl-1.0.22-b4095/lib/kuri/mjpeg/yccmemcont.vhd.bak
deleted file mode 100644 (file)
index 0f88489..0000000
+++ /dev/null
@@ -1,375 +0,0 @@
-library ieee;\r
-use ieee.std_logic_1164.all;\r
-use ieee.numeric_std.all;\r
-\r
-library grlib;\r
---use grlib.amba.all;\r
-use grlib.stdlib.all;\r
-use grlib.devices.all;\r
-\r
-library techmap;\r
-use techmap.gencomp.all;\r
-\r
-entity yccmemcont is\r
-   generic (\r
-      memtech : integer := DEFMEMTECH);\r
-   port (\r
-      rst   : in std_ulogic;\r
-      clk   : in std_ulogic;\r
-      kready1  : out std_logic;\r
-      kstrobe1 : in std_logic;\r
-      kdata1   : in std_logic_vector(7 downto 0);\r
-      kready2  : in std_logic;\r
-      kstrobe2 : out std_logic;\r
-      kdata2   : out std_logic_vector(23 downto 0);\r
-      samp_fact : in std_logic;\r
-      error     : out std_logic\r
-   );\r
-end;\r
--- samp_fact = 0 -> 4:1:1\r
--- samp_fact = 1 -> 4:2:2\r
-\r
-\r
-architecture rtl of yccmemcont is\r
-\r
-function stdv2str(vec:std_logic_vector) return string is\r
-   variable str : string(vec'length downto 1);\r
-   begin\r
-   for i in vec'length-1 downto 0 loop\r
-      if(vec(i)='U') then\r
-          str(i+1) := 'U';\r
-      elsif(vec(i)='X') then\r
-          str(i+1) := 'X';\r
-      elsif(vec(i)='0') then\r
-          str(i+1) := '0';\r
-      elsif(vec(i)='1') then\r
-           str(i+1) := '1';\r
-      elsif(vec(i)='Z') then\r
-           str(i+1) := 'Z';\r
-      elsif(vec(i)='W') then\r
-           str(i+1) := 'W';\r
-      elsif(vec(i)='L') then\r
-           str(i+1) := 'L';\r
-      elsif(vec(i)='H') then\r
-           str(i+1) := 'H';\r
-      else\r
-           str(i+1) := '-';\r
-      end if;\r
-   end loop;\r
-   return str;\r
-end;   \r
-          \r
-type sstate_type is (mem0, mem1);\r
-type mstate_type is (empty, writing, full, reading, standby);\r
-\r
-type control_reg is record\r
-    swf : sstate_type;\r
-    swb : sstate_type;\r
-    mem0state : mstate_type;\r
-    mem1state : mstate_type;\r
-    countf   : std_logic_vector(8 downto 0);\r
---    selectf  : std_logic_vector(1 downto 0);\r
-    countb   : std_logic_vector(7 downto 0);\r
---    countby  : std_logic_vector(7 downto 0);\r
---    countbcb : std_logic_vector(7 downto 0);\r
---    countbcr : std_logic_vector(7 downto 0);\r
-    stb2keep : std_logic;\r
-end record;\r
-\r
-signal r, rin : control_reg;\r
-signal y0address, y1address : std_logic_vector(7 downto 0);\r
-signal cb0address, cb1address, cr0address, cr1address : std_logic_vector(6 downto 0);\r
-signal y0datain, y1datain, cb0datain, cb1datain, cr0datain, cr1datain : std_logic_vector(7 downto 0);\r
-signal y0dataout, y1dataout, cb0dataout, cb1dataout, cr0dataout, cr1dataout : std_logic_vector(7 downto 0);\r
-signal y0enable, y1enable, cb0enable, cb1enable, cr0enable, cr1enable : std_logic;\r
-signal y0write, y1write, cb0write, cb1write, cr0write, cr1write : std_logic;\r
-\r
-begin\r
-yram0 : syncram generic map(tech => memtech, abits => 8, dbits => 8)\r
-            port map( clk, y0address, y0datain, y0dataout, y0enable, y0write);\r
-yram1 : syncram generic map(tech => memtech, abits => 8, dbits => 8)\r
-            port map( clk, y1address, y1datain, y1dataout, y1enable, y1write);\r
-cbram0 : syncram generic map(tech => memtech, abits => 7, dbits => 8)\r
-             port map( clk, cb0address, cb0datain, cb0dataout, cb0enable, cb0write);\r
-cbram1 : syncram generic map(tech => memtech, abits => 7, dbits => 8)\r
-             port map( clk, cb1address, cb1datain, cb1dataout, cb1enable, cb1write);\r
-crram0 : syncram generic map(tech => memtech, abits => 7, dbits => 8)\r
-             port map( clk, cr0address, cr0datain, cr0dataout, cr0enable, cr0write);\r
-crram1 : syncram generic map(tech => memtech, abits => 7, dbits => 8)\r
-             port map( clk, cr1address, cr1datain, cr1dataout, cr1enable, cr1write);                 \r
-                 \r
-                 \r
-comb : process (r, rst, kstrobe1, kdata1, kready2, samp_fact, y0dataout, y1dataout, \r
-                   cb0dataout, cb1dataout, cr0dataout, cr1dataout)\r
-      variable v : control_reg;     \r
-      variable vkready1 : std_logic;\r
-      variable verror : std_logic;\r
-      variable vy0address, vy1address : std_logic_vector(7 downto 0);\r
-      variable vcb0address, vcb1address, vcr0address, vcr1address : std_logic_vector(6 downto 0);\r
---      variable vy0datain, vy1datain, vcb0datain, vcb1datain, vcr0datain, vcr1datain \r
---                        : std_logic_vector(7 downto 0);\r
-      variable vy0enable, vy1enable, vcb0enable, vcb1enable, vcr0enable, vcr1enable \r
-                        : std_logic;\r
-      variable vy0write, vy1write, vcb0write, vcb1write, vcr0write, vcr1write : std_logic;\r
-      variable fcountup, bcountup : std_logic;\r
-      variable fcntint : integer;\r
-      variable vstrobe : std_logic;\r
-      variable outdata : std_logic_vector(23 downto 0);\r
-   begin\r
-\r
-   v := r;\r
-   verror := '0';\r
-   vy0enable := '0'; vy1enable := '0'; vcb0enable := '0'; vcb1enable := '0'; vcr0enable := '0'; vcr1enable := '0';\r
-   vy0write := '0'; vy1write := '0'; vcb0write := '0'; vcb1write := '0'; vcr0write := '0'; vcr1write := '0';\r
-   fcountup := '0'; bcountup := '0';\r
-   vy0address := (others => '0'); vy1address := (others => '0'); \r
-   vcb0address := (others => '0'); vcb1address := (others => '0');\r
-   vcr0address := (others => '0'); vcr1address := (others => '0');\r
-   \r
-   -- forward part\r
-   fcntint := to_integer(unsigned(r.countf));\r
-   if (kstrobe1 = '1') then\r
-       if ((r.swf = mem0 and (r.mem0state = full or r.mem0state = reading))or\r
-           (r.swf = mem1 and (r.mem1state = full or r.mem1state = reading)))then\r
-           verror := '1'; \r
-       end if;\r
-       fcountup := '1';\r
-       if(r.swf = mem0) then\r
-           if(samp_fact = '0') then\r
-               if(fcntint < 256) then\r
-                   vy0enable := '1';\r
-                   vy0write := '1';\r
-                   vy0address := r.countf(7 downto 0);\r
-               elsif(fcntint < 320) then\r
-                   vcb0enable := '1';\r
-                   vcb0write := '1';\r
-                   vcb0address := r.countf(6 downto 0);\r
-               elsif(fcntint < 384) then\r
-                   vcr0enable := '1';\r
-                   vcr0write := '1';\r
-                   vcr0address := '0' & r.countf(5 downto 0);\r
-               else\r
-                   verror := '1';\r
-               end if;\r
-           else\r
-               if(fcntint < 256) then\r
-                   vy0enable := '1';\r
-                   vy0write := '1';\r
-                   vy0address := r.countf(7 downto 0);\r
-               elsif(fcntint < 384) then\r
-                   vcb0enable := '1';\r
-                   vcb0write := '1';\r
-                   vcb0address := r.countf(6 downto 0);\r
-               elsif(fcntint < 512) then\r
-                   vcr0enable := '1';\r
-                   vcr0write := '1';\r
-                   vcr0address := r.countf(6 downto 0);\r
-               else\r
-                   verror := '1';\r
-               end if;           \r
-           end if;\r
-       else\r
-           if(samp_fact = '0') then\r
-               if(fcntint < 256) then\r
-                   vy1enable := '1';\r
-                   vy1write := '1';\r
-                   vy1address := r.countf(7 downto 0);\r
-               elsif(fcntint < 320) then\r
-                   vcb1enable := '1';\r
-                   vcb1write := '1';\r
-                   vcb1address := r.countf(6 downto 0);\r
-               elsif(fcntint < 384) then\r
-                   vcr1enable := '1';\r
-                   vcr1write := '1';\r
-                   vcr1address := '0' & r.countf(5 downto 0);\r
-               else\r
-                   verror := '1';\r
-               end if;\r
-           else\r
-               if(fcntint < 256) then\r
-                   vy1enable := '1';\r
-                   vy1write := '1';\r
-                   vy1address := r.countf(7 downto 0);\r
-               elsif(fcntint < 384) then\r
-                   vcb1enable := '1';\r
-                   vcb1write := '1';\r
-                   vcb1address := r.countf(6 downto 0);\r
-               elsif(fcntint < 512) then\r
-                   vcr1enable := '1';\r
-                   vcr1write := '1';\r
-                   vcr1address := r.countf(6 downto 0);\r
-               else\r
-                   verror := '1';\r
-               end if;           \r
-           end if;\r
-       end if;              \r
-   end if;\r
-   \r
-   vkready1 := '0';\r
-   if (r.swf = mem0 and (r.mem0state = empty or r.mem0state = writing)) or (r.swf = mem1 and (r.mem1state = empty or r.mem1state = writing)) then\r
-       vkready1 := '1';\r
-   end if;\r
-   \r
-   --backward part\r
-   v.stb2keep := '0';   \r
-   if (kready2 = '1') then\r
-       if(r.swb = mem0 and (r.mem0state = full or r.mem0state = reading)) then\r
-           bcountup := '1';\r
-           v.stb2keep := '1';\r
-           vy0enable := '1';         \r
-           vcb0enable := '1';\r
-           vcr0enable := '1';\r
-           vy0address := r.countb(7) & r.countb(3) & r.countb(6 downto 4) & r.countb(2 downto 0);\r
-           if(samp_fact = '0') then   \r
-               vcb0address := '0' & r.countb(7 downto 5) & r.countb(3 downto 1);\r
-               vcr0address := '0' & r.countb(7 downto 5) & r.countb(3 downto 1);\r
-           else\r
-               vcb0address := r.countb(7 downto 1);  \r
-               vcr0address := r.countb(7 downto 1);\r
-           end if;\r
-       elsif(r.swb = mem1 and (r.mem1state = full or r.mem1state = reading))then\r
-           bcountup := '1';\r
-           v.stb2keep := '1';\r
-           vy1enable := '1';\r
-           vcb1enable := '1';\r
-           vcr1enable := '1';\r
-           vy1address := r.countb(7) & r.countb(3) & r.countb(6 downto 4) & r.countb(2 downto 0);\r
-           if(samp_fact = '0') then   \r
-               vcb1address := '0' & r.countb(7 downto 5) & r.countb(3 downto 1);\r
-               vcr1address := '0' & r.countb(7 downto 5) & r.countb(3 downto 1);\r
-           else\r
-               vcb1address := r.countb(7 downto 1);  \r
-               vcr1address := r.countb(7 downto 1);\r
-           end if;\r
-       end if;\r
-   end if;\r
-   \r
-   if(r.swb = mem0)then\r
-       outdata := y0dataout & cb0dataout & cr0dataout;\r
-   else\r
-       outdata := y1dataout & cb1dataout & cr1dataout;\r
-   end if;\r
-   \r
-   \r
-   --state-machine\r
-   --check empty case batting memory read write access\r
-   \r
-\r
-   case r.mem0state is\r
-   when empty =>\r
-       if (r.swf = mem0 and fcountup = '1') then\r
-           v.mem0state := writing;\r
-       end if;\r
-   when writing =>\r
-       if ((samp_fact = '0' and fcntint = 383 and fcountup = '1')or(samp_fact = '1' and fcntint = 511 and fcountup = '1')) then\r
-          v.mem0state := full; \r
-          v.swf := mem1;\r
-       end if;\r
-   when full => \r
-       if (r.swb = mem0 and kready2 = '1') then\r
-           v.mem0state := reading;\r
-       end if;\r
-   when reading =>\r
-       if (r.countb = "11111111") then\r
-           v.mem0state := standby;\r
-       end if;\r
-   when standby => \r
-       v.swb := mem1;\r
-       v.mem0state := empty;\r
-   when others =>\r
-   end case;\r
-   \r
-   case r.mem1state is\r
-   when empty =>\r
-       if (r.swf = mem1 and fcountup = '1') then\r
-           v.mem1state := writing;\r
-       end if;\r
-   when writing =>\r
-       if ((samp_fact = '0' and fcntint = 383 and fcountup = '1')or(samp_fact = '1' and fcntint = 511 and fcountup = '1')) then\r
-          v.mem1state := full; \r
-          v.swf := mem0;\r
-       end if;\r
-   when full => \r
-       if (r.swb = mem1 and kready2 = '1') then\r
-           v.mem1state := reading;\r
-       end if;\r
-   when reading =>\r
-       if (r.countb = "11111111") then\r
-           v.mem1state := standby;\r
-       end if;\r
-   when standby =>\r
-       v.swb := mem0;\r
-       v.mem1state := empty;\r
-   when others =>\r
-   end case;   \r
-\r
--- counter\r
-   if(fcountup = '1') then\r
-       v.countf := r.countf + '1';\r
-       if (samp_fact = '0') and (fcntint = 383) then\r
-           v.countf := "000000000";\r
-       elsif (samp_fact = '1') and (fcntint = 511) then\r
-           v.countf := "000000000";\r
-       end if; \r
-   end if;\r
-   if (bcountup = '1') then\r
-       v.countb := r.countb + '1';\r
-   end if;\r
-  \r
--- reset part\r
-   if rst = '0' then\r
-       v.swf := mem0;\r
-       v.swb := mem0;\r
-       v.mem0state := empty;\r
-       v.mem1state := empty;\r
-       v.countf := (others => '0');\r
-       v.countb := (others => '0');\r
-       v.stb2keep := '0';\r
-   end if;\r
-  \r
--- signal\r
-\r
-   rin <= v;   \r
-   kready1 <= vkready1;\r
-   kstrobe2 <= r.stb2keep;\r
-   kdata2 <= outdata;\r
-   error <= verror;\r
-   y0address <= vy0address;\r
-   y1address <= vy1address;\r
-   cb0address <= vcb0address;\r
-   cb1address <= vcb1address;\r
-   cr0address <= vcr0address;\r
-   cr1address <= vcr1address;\r
-   y0enable <= vy0enable;\r
-   y1enable <= vy1enable;\r
-   cb0enable <= vcb0enable;\r
-   cb1enable <= vcb1enable;\r
-   cr0enable <= vcr0enable;\r
-   cr1enable <= vcr1enable;\r
-   y0write <= vy0write;\r
-   y1write <= vy1write;\r
-   cb0write <= vcb0write;\r
-   cb1write <= vcb1write;\r
-   cr0write <= vcr0write;\r
-   cr1write <= vcr1write;\r
-   \r
-end process;\r
-\r
-   y0datain <= kdata1;\r
-   y1datain <= kdata1;\r
-   cb0datain <= kdata1;\r
-   cb1datain <= kdata1;\r
-   cr0datain <= kdata1;\r
-   cr1datain <= kdata1;\r
-   \r
--- registers \r
-reg : process(clk)\r
-begin\r
-   if rising_edge(clk) then\r
-        r <= rin;\r
-   end if;\r
-end process;\r
-\r
-\r
-end;\r
-   
\ No newline at end of file