|   | 
          
            
  
  
  
   
 
 Next: Transport Control Module
 Up: Control Board
 Previous: Fader Module
     Contents 
 
 
 
Output Assign Module
The VHDL code used to synthesize the logic for the output assignment
module decode GAL is shown below.
-----------------------------------------------------------------------------
-- DACS : Distributed Audio Control System
--
-- Copyright (C) 1997 Stephen Scott Richardson
-----------------------------------------------------------------------------
--   File: outassn.vhd
--   Date: 03.13.97
-- Target: Atmel ATF16V8B
-----------------------------------------------------------------------------
-- Output assign board pbus address decoding GAL
--
-- pbus addx    function          dir (from uC)
-- ==================================================
-- 0x14         led group 1 ena   out
-- 0x15         led group 2 ena   out
-- 0x16         7 segment ena     out
-- 0x30         button grp 1 nena in
-- 0x31         button grp 2 nena in
-- 0x32         button grp 3 nena in
-----------------------------------------------------------------------------
ENTITY outassn_decode IS
	PORT (
		addx_in         :  IN bit_vector (6 DOWNTO 0);
		nlatch_in	:  IN bit;		
		nread_write_in	:  IN bit;
		btn_1_nena_out  :  OUT bit;
		btn_2_nena_out  :  OUT bit;
		btn_3_nena_out  :  OUT bit;
		seg7_ena_out   :  OUT bit;
		led_ena_2_out   :  OUT bit;
		led_ena_1_out   :  OUT bit;
                nsense_out      :  OUT bit
             );
-- Force a package and pinout
ATTRIBUTE part_name of outassn_decode:entity is "C16V8";
ATTRIBUTE pin_numbers of outassn_decode:entity is
	  "nread_write_in:1 nlatch_in:9 addx_in(0):2 addx_in(1):3
           addx_in(2):4 addx_in(3):5 addx_in(4):6 addx_in(5):7
           addx_in(6):8 nsense_out:12 btn_1_nena_out:13
           btn_2_nena_out:14 btn_3_nena_out:15 seg7_ena_out:16
           led_ena_2_out:17 led_ena_1_out:18";
END outassn_decode;
ARCHITECTURE behavior OF outassn_decode IS
BEGIN
	PROCESS (nlatch_in, addx_in, nread_write_in)
	BEGIN
		IF nlatch_in = '0' AND nread_write_in = '1'
		   AND addx_in = "0010100" THEN
			
			-- pbus 0x14 
			nsense_out <= '0';     -- pbus nsense ACTIVE
			led_ena_1_out <= '1';  -- led 1 ena ACTIVE
			led_ena_2_out <= '0';  -- led 2 ena INACTIVE
			seg7_ena_out <= '0';  -- 7seg ena  INACTIVE
			btn_3_nena_out <= '1'; -- btn 3 nena INACTIVE
			btn_2_nena_out <= '1'; -- btn 2 nena INACTIVE
			btn_1_nena_out <= '1'; -- btn 1 nena INACTIVE
		ELSIF nlatch_in = '0' AND nread_write_in = '1'
		   AND addx_in = "0010101" THEN
			-- pbus 0x15
			nsense_out <= '0';     -- pbus nsense ACTIVE
			led_ena_1_out <= '0';  -- led 1 ena INACTIVE
			led_ena_2_out <= '1';  -- led 2 ena ACTIVE
			seg7_ena_out <= '0';  -- 7seg ena  INACTIVE
			btn_3_nena_out <= '1'; -- btn 3 nena INACTIVE
			btn_2_nena_out <= '1'; -- btn 2 nena INACTIVE
			btn_1_nena_out <= '1'; -- btn 1 nena INACTIVE
		ELSIF nlatch_in = '0' AND nread_write_in = '1'
		   AND addx_in = "0010110" THEN
			-- pbus 0x16
			nsense_out <= '0';     -- pbus nsense ACTIVE
			led_ena_1_out <= '0';  -- led 1 ena INACTIVE
			led_ena_2_out <= '0';  -- led 2 ena INACTIVE
			seg7_ena_out <= '1';  -- 7seg ena  ACTIVE
			btn_3_nena_out <= '1'; -- btn 3 nena INACTIVE
			btn_2_nena_out <= '1'; -- btn 2 nena INACTIVE
			btn_1_nena_out <= '1'; -- btn 1 nena INACTIVE
		ELSIF nlatch_in = '0' AND nread_write_in = '0'
		   AND addx_in = "0110010" THEN
			-- pbus 0x32 (read)
			nsense_out <= '0';     -- pbus nsense ACTIVE
			led_ena_1_out <= '0';  -- led 1 ena INACTIVE
			led_ena_2_out <= '0';  -- led 2 ena INACTIVE
			seg7_ena_out <= '0';  -- 7seg ena  INACTIVE
			btn_3_nena_out <= '0'; -- btn 3 nena ACTIVE
			btn_2_nena_out <= '1'; -- btn 2 nena INACTIVE
			btn_1_nena_out <= '1'; -- btn 1 nena INACTIVE
		ELSIF nlatch_in = '0' AND nread_write_in = '0'
		   AND addx_in = "0110001" THEN
			-- pbus 0x31 (read)
			nsense_out <= '0';     -- pbus nsense ACTIVE
			led_ena_1_out <= '0';  -- led 1 ena INACTIVE
			led_ena_2_out <= '0';  -- led 2 ena INACTIVE
			seg7_ena_out <= '0';  -- 7seg ena  INACTIVE
			btn_3_nena_out <= '1'; -- btn 3 nena INACTIVE
			btn_2_nena_out <= '0'; -- btn 2 nena ACTIVE
			btn_1_nena_out <= '1'; -- btn 1 nena INACTIVE
		ELSIF nlatch_in = '0' AND nread_write_in = '0'
		   AND addx_in = "0110000" THEN
			-- pbus 0x30 (read)
			nsense_out <= '0';     -- pbus nsense ACTIVE
			led_ena_1_out <= '0';  -- led 1 ena INACTIVE
			led_ena_2_out <= '0';  -- led 2 ena INACTIVE
			seg7_ena_out <= '0';  -- 7seg ena  INACTIVE
			btn_3_nena_out <= '1'; -- btn 3 nena INACTIVE
			btn_2_nena_out <= '1'; -- btn 2 nena INACTIVE
			btn_1_nena_out <= '0'; -- btn 1 nena ACTIVE
		ELSE
			-- not active
			nsense_out <= '1';     -- pbus nsense INACTIVE
			led_ena_1_out <= '0';  -- led 1 ena INACTIVE
			led_ena_2_out <= '0';  -- led 2 ena INACTIVE
			seg7_ena_out <= '0';  -- 7seg ena  INACTIVE
			btn_3_nena_out <= '1'; -- btn 3 nena INACTIVE
			btn_2_nena_out <= '1'; -- btn 2 nena INACTIVE
			btn_1_nena_out <= '1'; -- btn 1 nena INACTIVE
		END IF;
	END PROCESS;
END behavior;
The pinout for the output assignment module decode GAL is shown below:
                        C16V8A
                 ___________________
 nread_write_in =| 1|           |20|* not used       
      addx_in_0 =| 2|           |19|* not used       
      addx_in_1 =| 3|           |18|= led_ena_1_out  
      addx_in_2 =| 4|           |17|= led_ena_2_out  
      addx_in_3 =| 5|           |16|= seg7_ena_out   
      addx_in_4 =| 6|           |15|= btn_3_nena_out 
      addx_in_5 =| 7|           |14|= btn_2_nena_out 
      addx_in_6 =| 8|           |13|= btn_1_nena_out 
      nlatch_in =| 9|           |12|= nsense_out     
       not used *|10|           |11|* not used       
                 ___________________
  
Steve Richardson
2000-07-06
 | 
Table of Contents
 
 
[Whole document in PDF 1.9MB]
 
 
[more photos and information]
 
 |