Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- this project is not a complete success, it is missing data manipulation (commented out) in the
- -- states var1 & var2 as seen below. To calculate the variance, as far as I can determine, there is
- -- not a plausible way w/o removing all my debugging code. (as I have done this in blind_st_mach.txt
- -- & I retain enough SLICEMs to build a bit file). However, in terms of visuality, I will submit this
- -- project up as the final draft.
- --
- -- Properties:
- -- inputs:
- -- left most button:
- -- reset - resets all info on the device, resetting the RAM, counters, displays, etc.
- -- second to left:
- -- state switch button. this button triggers a state switch flag, then waits for the
- -- user to remove their finger from the button, otherwise, it would venture into the
- -- next state & the button, still pressed, would call for the state to be switched
- -- again. This can be altered to an internal signal changing the state switch flag
- -- instead of a user's button, ie in the "hold steady" parts of each state (hold
- -- steady is only for debug purposes)
- -- switch vector:
- -- this is used to view values inside some 256 array, the general input
- -- source for debugging
- -- outputs:
- -- seven segment display:
- -- down near the end of the architecture is a set of processes that manipulate
- -- the seven segment display relying on 1 external input source "four_seg_disp".
- -- leds out:
- -- this array of 8 leds is a general purpose debugging tool, used for many different
- -- things up to 8 bits. sections of numbers are displayed (if they cannot fit) or
- -- any miscellaneous byte, depending on what is to be debugged.
- -- State machine:
- -- wait_st:
- -- in this state you are able to view the contents of the packet payload (up to
- -- 256 addresses in memory). this state can be used to wait for an incoming packet
- -- to properly load up the RAM
- -- taly_st:
- -- this state goes through all the bytes in the payload & tallies up the frequency
- -- of each number inside TALY(). It also takes the sum of all the numbers, thereby
- -- calculating the mean. The mean in this project is not appropriate because it does
- -- not do a true divide. It merely assumes a payload size of 256 & bitshifts 8 places.
- -- A divide would prove to add more hardware & was not considered at this time.
- -- vari_st:
- -- this state was broken down into smaller states due to too complex operations
- -- happening.
- -- var1_st:
- -- first part of vari_st, this state takes all bin tallies, subtracts them from
- -- the mean, & places the absolute value in the respective VARI().
- -- var2_st:
- -- taking the variance mean, this state adds up the variances, taking the abs held
- -- in VARI(), squaring it, & adding it to the running sum.
- -- disp_st:
- -- mainly for debugging purposes, you can view the mean & variance, which are the
- -- stats desired from the operation. This state would be a good state to send off
- -- these calculations & await approval from external devices.
- library IEEE;
- use IEEE.STD_LOGIC_1164.ALL;
- use ieee.std_logic_unsigned.all;
- entity FINAL_VHDL_MOD is
- port(
- clock : in std_logic;
- reset : in std_logic;
- btn_st_sw : in std_logic;
- swtch_vec : in std_logic_vector ( 7 downto 0);
- seg_disp : out std_logic_vector ( 6 downto 0);
- byte_out : out std_logic_vector ( 7 downto 0);
- digit_disp : out std_logic_vector ( 3 downto 0)
- );
- end FINAL_VHDL_MOD;
- architecture fsm of FINAL_VHDL_MOD is
- type pkt_type is array (255 downto 0) of std_logic_vector (07 downto 0); -- so far, this can only handle packets of 256 bytes exactly
- type ram_type is array (255 downto 0) of std_logic_vector (15 downto 0); --1 byte array ram type
- type st_type is (wait_st, taly_st, var1_st, var2_st, disp_st); --state machine
- -- wait_st: the chip sits around, twiddling its thumbs, waiting for you to push GO
- -- taly_st: the chip goes through all addresses in payload buffer in RAM
- -- & tallies them in appropriate bin in RAM, also, mean is found in this step
- -- (being sum of all bytes in buffer divided by x100 (bitshift 8)
- -- vari_st: after mean is determined, mean is subtracted from each tally bin
- -- & the value "is squared"(not sure yet) & placed in another buffer. also, the
- -- value is added to a running sum. running sum will then be averaged (bitshift 8)
- -- disp_st: once average variance is calculated, results are displayed in some form
- -- as mean & avg. variance. perhaps a loop to get back to wait_st
- --four_seg_display:
- signal seg_selector : std_logic_vector( 1 downto 0):= "00";
- signal one_seg_disp : std_logic_vector( 3 downto 0);
- signal four_seg_disp : std_logic_vector(15 downto 0);
- --end four_seg_display
- signal PYLD : pkt_type; -- incoming packet payload
- signal TALY : ram_type; -- tally bins, each number appearing in the payload
- signal VARI : ram_type; -- variance of each tally bin, no this does not hinder fpga space like I thought it would
- signal curr_st, next_st : st_type; -- states of state machine
- signal st_sw_flag : std_logic := '0'; -- the flag that triggers the state switch. de-assign the button & reassign another switch to increase performance
- signal mean_pre_div : std_logic_vector(15 downto 0); -- word size adding all values of all tallies together
- signal vari_mean_pre_div : std_logic_vector(31 downto 0); -- running sum of each bin's variance
- begin
- process(clock,reset,btn_st_sw)
- variable payload_size : natural := 256; -- payload size. This number will be variable when actually implemented
- variable data_runs : integer range 0 to 65535 := 0; -- counter with 16 bits of range, used universally
- variable btn_psh_dly : integer range 0 to 8388607; -- clock cycles it takes for you to take your thumb off button
- begin
- if (clock'event and clock = '1') then
- if (reset='1') then
- -- main reset protocols
- PYLD(000) <= "01111010"; PYLD(001) <= "10100110"; PYLD(002) <= "00011001"; PYLD(003) <= "00001010"; PYLD(004) <= "11111110"; PYLD(005) <= "01000111"; PYLD(006) <= "01011101"; PYLD(007) <= "11001010"; PYLD(008) <= "00100001"; PYLD(009) <= "11010100"; PYLD(010) <= "11010101"; PYLD(011) <= "01011011"; PYLD(012) <= "10011000"; PYLD(013) <= "01111001"; PYLD(014) <= "01001110"; PYLD(015) <= "01000111";
- PYLD(016) <= "00000010"; PYLD(017) <= "01110001"; PYLD(018) <= "00101001"; PYLD(019) <= "00100000"; PYLD(020) <= "10111010"; PYLD(021) <= "10000000"; PYLD(022) <= "11101110"; PYLD(023) <= "11000001"; PYLD(024) <= "10100011"; PYLD(025) <= "01111010"; PYLD(026) <= "00001010"; PYLD(027) <= "01111111"; PYLD(028) <= "01110000"; PYLD(029) <= "01011010"; PYLD(030) <= "11011101"; PYLD(031) <= "00110110";
- PYLD(032) <= "11111101"; PYLD(033) <= "11001010"; PYLD(034) <= "00111101"; PYLD(035) <= "01111100"; PYLD(036) <= "01101100"; PYLD(037) <= "01101110"; PYLD(038) <= "01001001"; PYLD(039) <= "01011101"; PYLD(040) <= "01000101"; PYLD(041) <= "10111100"; PYLD(042) <= "00101001"; PYLD(043) <= "11011101"; PYLD(044) <= "11011011"; PYLD(045) <= "01100000"; PYLD(046) <= "10111001"; PYLD(047) <= "11011000";
- PYLD(048) <= "00101001"; PYLD(049) <= "01001100"; PYLD(050) <= "11111000"; PYLD(051) <= "01001111"; PYLD(052) <= "11001100"; PYLD(053) <= "11101001"; PYLD(054) <= "10101110"; PYLD(055) <= "00011111"; PYLD(056) <= "10101111"; PYLD(057) <= "01100011"; PYLD(058) <= "01101111"; PYLD(059) <= "11000000"; PYLD(060) <= "00000100"; PYLD(061) <= "01001101"; PYLD(062) <= "11110110"; PYLD(063) <= "11111011";
- PYLD(064) <= "10100000"; PYLD(065) <= "00110100"; PYLD(066) <= "01111000"; PYLD(067) <= "11011100"; PYLD(068) <= "01000101"; PYLD(069) <= "00001101"; PYLD(070) <= "10101111"; PYLD(071) <= "00100010"; PYLD(072) <= "10110111"; PYLD(073) <= "01010001"; PYLD(074) <= "00000000"; PYLD(075) <= "00010011"; PYLD(076) <= "00001001"; PYLD(077) <= "10111001"; PYLD(078) <= "11000111"; PYLD(079) <= "10100100";
- PYLD(080) <= "11110011"; PYLD(081) <= "11000000"; PYLD(082) <= "11101000"; PYLD(083) <= "01000000"; PYLD(084) <= "01011001"; PYLD(085) <= "00110001"; PYLD(086) <= "11011111"; PYLD(087) <= "11110001"; PYLD(088) <= "01001010"; PYLD(089) <= "10001111"; PYLD(090) <= "11001001"; PYLD(091) <= "01001110"; PYLD(092) <= "11000101"; PYLD(093) <= "01000000"; PYLD(094) <= "01001010"; PYLD(095) <= "10010101";
- PYLD(096) <= "01110100"; PYLD(097) <= "00001110"; PYLD(098) <= "00100111"; PYLD(099) <= "10001011"; PYLD(100) <= "00000100"; PYLD(101) <= "01011011"; PYLD(102) <= "10101000"; PYLD(103) <= "10110000"; PYLD(104) <= "00100110"; PYLD(105) <= "10101000"; PYLD(106) <= "10101011"; PYLD(107) <= "00101111"; PYLD(108) <= "11001101"; PYLD(109) <= "00011101"; PYLD(110) <= "10011000"; PYLD(111) <= "01000001";
- PYLD(112) <= "11011101"; PYLD(113) <= "00001100"; PYLD(114) <= "10100001"; PYLD(115) <= "10101010"; PYLD(116) <= "10111101"; PYLD(117) <= "00000001"; PYLD(118) <= "10100111"; PYLD(119) <= "11110000"; PYLD(120) <= "10001110"; PYLD(121) <= "00011110"; PYLD(122) <= "01000001"; PYLD(123) <= "10101000"; PYLD(124) <= "01011110"; PYLD(125) <= "00101011"; PYLD(126) <= "01111101"; PYLD(127) <= "10010101";
- PYLD(128) <= "00100010"; PYLD(129) <= "01000101"; PYLD(130) <= "01011110"; PYLD(131) <= "00100110"; PYLD(132) <= "00111110"; PYLD(133) <= "11110001"; PYLD(134) <= "10001110"; PYLD(135) <= "00000111"; PYLD(136) <= "10100101"; PYLD(137) <= "01100010"; PYLD(138) <= "10101011"; PYLD(139) <= "00011010"; PYLD(140) <= "01111111"; PYLD(141) <= "01110111"; PYLD(142) <= "01011011"; PYLD(143) <= "01011101";
- PYLD(144) <= "11111000"; PYLD(145) <= "11111010"; PYLD(146) <= "11110000"; PYLD(147) <= "00111011"; PYLD(148) <= "11111011"; PYLD(149) <= "00101111"; PYLD(150) <= "11010111"; PYLD(151) <= "10001010"; PYLD(152) <= "00110110"; PYLD(153) <= "10110110"; PYLD(154) <= "01100110"; PYLD(155) <= "11100111"; PYLD(156) <= "10000010"; PYLD(157) <= "00100100"; PYLD(158) <= "00001001"; PYLD(159) <= "10100001";
- PYLD(160) <= "01100011"; PYLD(161) <= "01010000"; PYLD(162) <= "10010111"; PYLD(163) <= "11000010"; PYLD(164) <= "10011001"; PYLD(165) <= "01011010"; PYLD(166) <= "11000100"; PYLD(167) <= "01111100"; PYLD(168) <= "00000101"; PYLD(169) <= "00011111"; PYLD(170) <= "01101001"; PYLD(171) <= "11111001"; PYLD(172) <= "11100111"; PYLD(173) <= "10001110"; PYLD(174) <= "10011010"; PYLD(175) <= "01100000";
- PYLD(176) <= "00001011"; PYLD(177) <= "00010110"; PYLD(178) <= "01000111"; PYLD(179) <= "00001101"; PYLD(180) <= "10111010"; PYLD(181) <= "10110011"; PYLD(182) <= "10000000"; PYLD(183) <= "10010011"; PYLD(184) <= "11011100"; PYLD(185) <= "11100110"; PYLD(186) <= "00001101"; PYLD(187) <= "00111110"; PYLD(188) <= "11010001"; PYLD(189) <= "00000010"; PYLD(190) <= "01000000"; PYLD(191) <= "10001010";
- PYLD(192) <= "01010010"; PYLD(193) <= "11010111"; PYLD(194) <= "00101001"; PYLD(195) <= "00100111"; PYLD(196) <= "01100010"; PYLD(197) <= "00011101"; PYLD(198) <= "01000100"; PYLD(199) <= "01100111"; PYLD(200) <= "00001101"; PYLD(201) <= "10011101"; PYLD(202) <= "10100001"; PYLD(203) <= "11101001"; PYLD(204) <= "01010100"; PYLD(205) <= "01111011"; PYLD(206) <= "10111001"; PYLD(207) <= "01011111";
- PYLD(208) <= "11100010"; PYLD(209) <= "11111110"; PYLD(210) <= "01010101"; PYLD(211) <= "00100101"; PYLD(212) <= "10110010"; PYLD(213) <= "11010101"; PYLD(214) <= "10110110"; PYLD(215) <= "00010001"; PYLD(216) <= "01001000"; PYLD(217) <= "01111000"; PYLD(218) <= "00100000"; PYLD(219) <= "10111001"; PYLD(220) <= "01111010"; PYLD(221) <= "01100000"; PYLD(222) <= "11110111"; PYLD(223) <= "10010101";
- PYLD(224) <= "01001111"; PYLD(225) <= "11000001"; PYLD(226) <= "10110001"; PYLD(227) <= "00011100"; PYLD(228) <= "11011100"; PYLD(229) <= "11110101"; PYLD(230) <= "01111000"; PYLD(231) <= "00110111"; PYLD(232) <= "00010110"; PYLD(233) <= "00100101"; PYLD(234) <= "11000001"; PYLD(235) <= "01001001"; PYLD(236) <= "01000001"; PYLD(237) <= "10000100"; PYLD(238) <= "10110001"; PYLD(239) <= "10010011";
- PYLD(240) <= "00000101"; PYLD(241) <= "11101100"; PYLD(242) <= "10110110"; PYLD(243) <= "10110111"; PYLD(244) <= "11000111"; PYLD(245) <= "11011011"; PYLD(246) <= "10101110"; PYLD(247) <= "10101111"; PYLD(248) <= "10011111"; PYLD(249) <= "01011110"; PYLD(250) <= "11001001"; PYLD(251) <= "11101010"; PYLD(252) <= "00000001"; PYLD(253) <= "01000001"; PYLD(254) <= "00000000"; PYLD(255) <= "01001110";
- --bits seeded with 4EE7356E
- four_seg_disp <= "0000000000000000";
- btn_psh_dly := 0;
- byte_out <= "11111111";
- curr_st <= wait_st;
- next_st <= wait_st;
- mean_pre_div <= "0000000000000000";
- vari_mean_pre_div <= "00000000000000000000000000000000";
- elsif (st_sw_flag = '1') then
- -- switching from current state to next state
- four_seg_disp <= "1010000010100000";
- if (btn_psh_dly>0) then
- btn_psh_dly := btn_psh_dly - 1;
- else
- curr_st <= next_st;
- st_sw_flag <= '0';
- end if;
- else
- -- in curr_st
- if (btn_st_sw = '1') then
- -- button was pressed, prepare for state switch
- st_sw_flag <= '1';
- btn_psh_dly := 8388607;
- data_runs := 0;
- case curr_st is
- when wait_st =>
- next_st <= taly_st;
- byte_out <= "00000010";
- when taly_st =>
- next_st <= var1_st;
- byte_out <= "00000100";
- when var1_st =>
- next_st <= var2_st;
- byte_out <= "00001000";
- when var2_st =>
- next_st <= disp_st;
- byte_out <= "00010000";
- when disp_st =>
- next_st <= wait_st;
- byte_out <= "00000001";
- when others =>
- next_st <= wait_st;
- byte_out <= "00011111";
- end case;
- else
- -- I am in curr_st w/o interruption
- case curr_st is
- -- this switch case here contains all details about algorithms performed
- when wait_st =>
- -- not much going in on wait_st
- four_seg_disp <= "00000001" & swtch_vec;
- byte_out <= PYLD(conv_integer(swtch_vec));
- when taly_st =>
- -- tallying up all bins, from 0 to <payload size
- four_seg_disp <= mean_pre_div;
- byte_out <= TALY(conv_integer(swtch_vec))( 7 downto 0);
- if (data_runs < payload_size) then
- mean_pre_div <= mean_pre_div + PYLD(data_runs);
- TALY(conv_integer(PYLD(data_runs))) <= TALY(conv_integer(PYLD(data_runs))) + "00000001";
- data_runs := data_runs + 1;
- else
- --hold steady
- end if;
- when var1_st =>
- -- getting absolute value of VARI() - mean. first part of vari_st
- -- if (data_runs < 256) then
- -- if (("00000000" & mean_pre_div(15 downto 8))>TALY(data_runs)) then
- -- VARI(data_runs) <= (("00000000" & mean_pre_div(15 downto 8))-TALY(data_runs));
- -- else
- -- VARI(data_runs) <= (TALY(data_runs)-("00000000" & mean_pre_div(15 downto 8)));
- -- end if;
- -- data_runs := data_runs + 1;
- -- else
- -- --hold steady
- -- end if;
- byte_out <= TALY(conv_integer(swtch_vec))( 7 downto 0);
- four_seg_disp <= VARI(conv_integer(swtch_vec));
- when var2_st =>
- -- taking variance of values held in VARI() & adding to variance mean
- -- if (data_runs < 256) then
- -- vari_mean_pre_div <= vari_mean_pre_div + VARI(data_runs)*VARI(data_runs);
- -- data_runs := data_runs + 1;
- -- else
- -- --hold steady
- -- end if;
- four_seg_disp <= vari_mean_pre_div(15 downto 0);
- byte_out <= vari_mean_pre_div(23 downto 16);
- when disp_st =>
- -- displays final results of process
- four_seg_disp <= mean_pre_div(15 downto 8) & vari_mean_pre_div(15 downto 8);
- byte_out <= VARI(conv_integer(swtch_vec))( 7 downto 0);
- when others =>
- four_seg_disp <= "0000011000000000";
- end case;
- end if;
- end if;
- end if;
- end process;
- -------------------------------------------------------------------------------------
- -- the purpose of this lower section is to manage the four 7segment display, leaving
- -- the upper part of the processes to only manage the four_seg_disp as the sole
- -- variable. The signals associated with this section are marked above.
- -- four_seg_display:
- process (seg_selector,four_seg_disp)
- begin
- case seg_selector is
- when "00" =>
- one_seg_disp <= four_seg_disp( 3 downto 0);
- digit_disp <= "1110";
- when "01" =>
- one_seg_disp <= four_seg_disp( 7 downto 4);
- digit_disp <= "1101";
- when "10" =>
- one_seg_disp <= four_seg_disp(11 downto 8);
- digit_disp <= "1011";
- when "11" =>
- one_seg_disp <= four_seg_disp(15 downto 12);
- digit_disp <= "0111";
- when others =>
- one_seg_disp <= "0000";
- digit_disp <= "1111";
- end case;
- case one_seg_disp is
- when "0000" =>
- seg_disp <= "1000000"; --0
- when "0001" =>
- seg_disp <= "1111001"; --1
- when "0010" =>
- seg_disp <= "0100100"; --2
- when "0011" =>
- seg_disp <= "0110000"; --3
- when "0100" =>
- seg_disp <= "0011001"; --4
- when "0101" =>
- seg_disp <= "0010010"; --5
- when "0110" =>
- seg_disp <= "0000010"; --6
- when "0111" =>
- seg_disp <= "1111000"; --7
- when "1000" =>
- seg_disp <= "0000000"; --8
- when "1001" =>
- seg_disp <= "0010000"; --9
- when "1010" =>
- seg_disp <= "0001000"; --A
- when "1011" =>
- seg_disp <= "0000011"; --B
- when "1100" =>
- seg_disp <= "1000110"; --C
- when "1101" =>
- seg_disp <= "0100001"; --D
- when "1110" =>
- seg_disp <= "0000110"; --E
- when "1111" =>
- seg_disp <= "0001110"; --F
- when others =>
- seg_disp <= "1111111";
- end case;
- end process;
- process (clock)
- variable seg_timout: integer range 0 to 65535;
- begin
- if (clock'event and clock = '1') then
- if (seg_timout=0) then
- seg_selector <= seg_selector + "01";
- end if;
- seg_timout:=seg_timout-1;
- end if;
- end process;
- -- end four_seg_display
- end fsm;
- -------------------------------------------------------------------
- -------------------------------------------------------------------
- NET "clock" LOC = "P54"; # Bank = 2, Pin name = IO_L5N_2/D3/Gclock31, Sch name = clock1
- NET "reset" LOC = "P69"; # Bank = 2, Pin name = IP, Sch name = BTN0
- NET "btn_st_sw" LOC = "P48"; # Bank = 2, Pin name = IP_L3N_2/VREF_2 Sch name = BTN1
- NET "seg_disp<1>" LOC = "P16"; # Bank = 3, Pin name = IO_L5P_3/Gclock22, Sch name = CB
- NET "seg_disp<0>" LOC = "P25"; # Bank = 3, Pin name = IO_L8P_3, Sch name = CA
- NET "seg_disp<2>" LOC = "P23"; # Bank = 3, Pin name = IO_L7N_3/Gclock27 Sch name = CC
- NET "seg_disp<3>" LOC = "P21"; # Bank = 3, Pin name = IO_L6N_3/Gclock25, Sch name = CD
- NET "seg_disp<4>" LOC = "P20"; # Bank = 3, Pin name = IO_L6P_3/Gclock24/TRDY2,Sch name = CE
- NET "seg_disp<5>" LOC = "P17"; # Bank = 3, Pin name = IO_L5N_3/Gclock23/IRDY2,Sch name = CF
- NET "seg_disp<6>" LOC = "P83"; # Bank = 1, Pin name = IO/VREF_1, Sch name = CG
- #NET "dp" LOC = "P22"; # Bank = 3, Pin name = IO_L7P_3/Gclock26, Sch name = DP
- NET "digit_disp<0>" LOC = "P34"; # Bank = 3, Pin name = IO_L10P_3, Sch name = AN1
- NET "digit_disp<1>" LOC = "P33"; # Bank = 3, Pin name = IO_L9N_3, Sch name = AN2
- NET "digit_disp<2>" LOC = "P32"; # Bank = 3, Pin name = IO_L9P_3, Sch name = AN3
- NET "digit_disp<3>" LOC = "P26"; # Bank = 3, Pin name = IO_L8N_3, Sch name = AN4
- NET "byte_out<0>" LOC = "P15"; # Bank = 3, Pin name = IO_L4N_3/GCLK21 Sch name = LD0
- NET "byte_out<1>" LOC = "P14"; # Bank = 3, Pin name = IO_L4P_3/GCLK20 Sch name = LD1
- NET "byte_out<2>" LOC = "P8"; # Bank = 3, Pin name = IO_L3N_3, Sch name = LD2
- NET "byte_out<3>" LOC = "P7"; # Bank = 3, Pin name = IO_L3P_3, Sch name = LD3
- NET "byte_out<4>" LOC = "P5"; # Bank = 3, Pin name = IO_L2N_3/VREF_3, Sch name = LD4
- NET "byte_out<5>" LOC = "P4"; # Bank = 3, Pin name = IO_L2P_3, Sch name = LD5
- NET "byte_out<6>" LOC = "P3"; # Bank = 3, Pin name = IO_L1N_3, Sch name = LD6
- NET "byte_out<7>" LOC = "P2"; # Bank = 3, Pin name = IO_L1P_3, Sch name = LD7
- NET "swtch_vec<0>" LOC = "P38"; # Bank = 2, Pin name = IP, Sch name = SW0
- NET "swtch_vec<1>" LOC = "P36"; # Bank = 3, Pin name = IP, Sch name = SW1
- NET "swtch_vec<2>" LOC = "P29"; # Bank = 3, Pin name = IO(3S100E)/IP(3S250E),Sch name = SW2
- NET "swtch_vec<3>" LOC = "P24"; # Bank = 3, Pin name = IP Sch name = SW3
- NET "swtch_vec<4>" LOC = "P18"; # Bank = 3, Pin name = IP, Sch name = SW4
- NET "swtch_vec<5>" LOC = "P12"; # Bank = 3, Pin name = IP/VREF_3, Sch name = SW5
- NET "swtch_vec<6>" LOC = "P10"; # Bank = 3, Pin name = IO(3S100E)/IP(3S250E),Sch name = SW6
- NET "swtch_vec<7>" LOC = "P6"; # Bank = 3, Pin name = IP, Sch name = SW7
Advertisement
Add Comment
Please, Sign In to add comment