Rev 2528 Rev 2533
Line 1... Line 1...
1 ---------------------------------------------------------------------------------- 1 ----------------------------------------------------------------------------------
2 -- Company: www.mlab.cz 2 -- Company: www.mlab.cz
3 -- Engineer: miho, kakl 3 -- Based on code writen by MIHO.
4 -- 4 --
5 -- Create Date: 29/08/2011 5 -- Create Date: 29/08/2011
6 -- Design Name: S3AN01A Test Design 6 -- Design Name: S3AN01A Test Design
7 -- Module Name: PulseGen -  
8 -- Project Name: PulseGen 7 -- Project Name: PulseGen
9 -- Target Devices: XC3S50AN-4 8 -- Target Devices: XC3S50AN-4
10 -- Tool versions: ISE 13.3 9 -- Tool versions: ISE 13.3
11 -- Description: Sample of Pulse Generator at S3AN01A MLAB board. 10 -- Description: Sample of Pulse Generator at S3AN01A MLAB board.
12 -- 11 --
13 -- Dependencies: External PS/2 Keyboard has to be connected. 12 -- Dependencies: External PS/2 Keyboard has to be connected.
14 -- 13 --
15 -- Revision: 1.00 File Created 14 -- Version: $Id: PulseGen.vhd 2533 2012-09-02 13:36:25Z kakl $
16 -- 15 --
17 ---------------------------------------------------------------------------------- 16 ----------------------------------------------------------------------------------
18   17  
19 library IEEE; 18 library IEEE;
20 use IEEE.STD_LOGIC_1164.ALL; 19 use IEEE.STD_LOGIC_1164.ALL;
Line 156... Line 155...
156 signal T1: unsigned(15 downto 0) := X"000a"; -- Time t1 to Impuls at O2 155 signal T1: unsigned(15 downto 0) := X"000a"; -- Time t1 to Impuls at O2
157 signal T2: unsigned(15 downto 0) := X"0001"; -- Duration t2 of impuls at O2 156 signal T2: unsigned(15 downto 0) := X"0001"; -- Duration t2 of impuls at O2
158 signal CT0: unsigned(15 downto 0) := X"0000"; -- Timer 157 signal CT0: unsigned(15 downto 0) := X"0000"; -- Timer
159 signal O1: std_logic := '0'; -- Output 1 158 signal O1: std_logic := '0'; -- Output 1
160 signal O2: std_logic := '0'; -- Output 2 159 signal O2: std_logic := '0'; -- Output 2
-   160 signal CTburst: unsigned(15 downto 0) := X"0000"; -- Pulse counter
161 161
162 -- LED Demo Signals 162 -- LED Demo Signals
163 -- ---------------- 163 -- ----------------
164   164  
165 signal Counter: unsigned(31 downto 0) := X"00000000"; -- Main Counter (binary) 165 signal Counter: unsigned(31 downto 0) := X"00000000"; -- Main Counter (binary)
Line 350... Line 350...
350 PS2_Result( 7 downto 0) <= PS2_Code; 350 PS2_Result( 7 downto 0) <= PS2_Code;
351 PS2_Result(15 downto 8) <= PS2_Attribs; 351 PS2_Result(15 downto 8) <= PS2_Attribs;
352 end if; 352 end if;
353 353
354 if PS2_Valid and PS2_Attribs(7)='0' then 354 if PS2_Valid and PS2_Attribs(7)='0' then
355 if PS2_Code = X"74" and T1<200 then T1<=T1+1; end if; 355 if PS2_Code = X"74" and T1<2000 then T1<=T1+1; end if;
356 if PS2_Code = X"6b" and T1>0 then T1<=T1-1; end if; 356 if PS2_Code = X"6b" and T1>0 then T1<=T1-1; end if;
357 if PS2_Code = X"75" and T2<200 then T2<=T2+1; end if; 357 if PS2_Code = X"75" and T2<200 then T2<=T2+1; end if;
358 if PS2_Code = X"72" and T2>0 then T2<=T2-1; end if; 358 if PS2_Code = X"72" and T2>0 then T2<=T2-1; end if;
359 CT0<=X"0000"; 359 CT0<=X"0000";
360 O1<='0'; 360 O1<='0';
361 O2<='0'; 361 O2<='0';
-   362 CTburst<=X"0000";
362 end if; 363 end if;
363   364  
-   365 if PB(0)='1' then
-   366 T1<=X"0000";
-   367 T2<=X"0000";
-   368 end if;
-   369
-   370 if DIPSW(0)='1' then
364 if CT0=X"F000" then 371 if CT0>X"F000" then
365 CT0<=X"0000"; 372 CT0<=X"0000";
366 else 373 else
367 CT0<=CT0+1; 374 CT0<=CT0+1;
368 end if; 375 end if;
369 376 else
370 if CT0=X"0000" then 377 if CT0>X"0200" then
-   378 CT0<=X"0000";
-   379 else
371 O1<='1'; 380 CT0<=CT0+1;
-   381 end if;
372 end if; 382 end if;
373 383
-   384 if CTburst>2000 then
-   385 CTburst<=X"0000";
-   386 end if;
-   387  
-   388 if (CTburst<1000) or (DIPSW(1)='0') then
374 if CT0=T1 then 389 if CT0=X"0000" then
-   390 O1<='1';
-   391 end if;
-   392
-   393 if CT0=T1+X"0000" then
375 O2<='1'; 394 O2<='1';
-   395 end if;
376 end if; 396 end if;
377 397
378 if CT0=(T2+T1) then 398 if CT0=T2+T1+X"0000" then
379 O1<='0'; 399 O1<='0';
380 O2<='0'; 400 O2<='0';
-   401 CTburst<=CTburst+1;
381 end if; 402 end if;
382 403
383 end if; 404 end if;
384 405
385 end process; 406 end process;
Line 414... Line 435...
414 B(1) <= not O1; 435 B(1) <= not O1;
415 DIF2P <= O2; 436 DIF2P <= O2;
416 B(2) <= O2; 437 B(2) <= O2;
417 DIF2N <= not O2; 438 DIF2N <= not O2;
418 B(3) <= not O2; 439 B(3) <= not O2;
-   440
-   441 VGA_R(0) <= O1;
-   442 VGA_R(1) <= O2;
419   443  
420 -- Unused Signals 444 -- Unused Signals
421 -- ============== 445 -- ==============
422   446  
423 -- I2C Signals (on connector J30) 447 -- I2C Signals (on connector J30)