Extended controller so that waveform is printed. added reset button to toplevel schema.

This commit is contained in:
T-moe
2016-06-10 10:58:27 +02:00
parent 8a0eece0e6
commit cbda71ae40
6 changed files with 249 additions and 231 deletions

View File

@@ -1,44 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<symbol version="7" name="controller">
<symboltype>BLOCK</symboltype>
<timestamp>2016-6-6T19:48:13</timestamp>
<pin polarity="Input" x="0" y="-416" name="clk" />
<pin polarity="Input" x="0" y="-352" name="rst" />
<pin polarity="Input" x="0" y="-96" name="enc_err" />
<pin polarity="Input" x="0" y="-32" name="lcd_busy" />
<pin polarity="Output" x="432" y="-416" name="lcd_newchar" />
<pin polarity="Input" x="0" y="-288" name="enc_btn" />
<pin polarity="Output" x="432" y="-352" name="lcd_newpos" />
<pin polarity="Output" x="432" y="-288" name="lcd_data(7:0)" />
<pin polarity="Output" x="432" y="-224" name="freq_out(16:0)" />
<pin polarity="Input" x="0" y="-160" name="enc_ce" />
<pin polarity="Input" x="0" y="-224" name="enc_updown" />
<timestamp>2016-6-10T7:49:11</timestamp>
<pin polarity="Input" x="0" y="-480" name="clk" />
<pin polarity="Input" x="0" y="-416" name="rst" />
<pin polarity="Input" x="0" y="-160" name="enc_err" />
<pin polarity="Input" x="0" y="-96" name="lcd_busy" />
<pin polarity="Input" x="0" y="-32" name="form(1:0)" />
<pin polarity="Input" x="0" y="-352" name="enc_btn" />
<pin polarity="Input" x="0" y="-224" name="enc_ce" />
<pin polarity="Input" x="0" y="-288" name="enc_updown" />
<pin polarity="Output" x="544" y="-480" name="lcd_newchar" />
<pin polarity="Output" x="544" y="-416" name="lcd_newpos" />
<pin polarity="Output" x="544" y="-352" name="lcd_data(7:0)" />
<pin polarity="Output" x="544" y="-288" name="freq_out(16:0)" />
<graph>
<rect width="304" x="64" y="-448" height="448" />
<attrtext style="alignment:BCENTER;fontsize:56;fontname:Arial" attrname="SymbolName" x="216" y="-456" type="symbol" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-416" type="pin clk" />
<rect width="416" x="64" y="-512" height="512" />
<attrtext style="alignment:BCENTER;fontsize:56;fontname:Arial" attrname="SymbolName" x="216" y="-520" type="symbol" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-480" type="pin clk" />
<line x2="0" y1="-480" y2="-480" x1="64" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-416" type="pin rst" />
<line x2="0" y1="-416" y2="-416" x1="64" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-352" type="pin rst" />
<line x2="0" y1="-352" y2="-352" x1="64" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-96" type="pin enc_err" />
<line x2="0" y1="-96" y2="-96" x1="64" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-32" type="pin lcd_busy" />
<line x2="0" y1="-32" y2="-32" x1="64" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-416" type="pin lcd_newchar" />
<line x2="432" y1="-416" y2="-416" x1="368" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-288" type="pin enc_btn" />
<line x2="0" y1="-288" y2="-288" x1="64" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-352" type="pin lcd_newpos" />
<line x2="432" y1="-352" y2="-352" x1="368" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-288" type="pin lcd_data(7:0)" />
<rect width="64" x="368" y="-300" height="24" />
<line x2="432" y1="-288" y2="-288" x1="368" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="360" y="-224" type="pin freq_out(16:0)" />
<rect width="64" x="368" y="-236" height="24" />
<line x2="432" y1="-224" y2="-224" x1="368" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-160" type="pin enc_ce" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-160" type="pin enc_err" />
<line x2="0" y1="-160" y2="-160" x1="64" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-224" type="pin enc_updown" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-96" type="pin lcd_busy" />
<line x2="0" y1="-96" y2="-96" x1="64" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-32" type="pin form(1:0)" />
<rect width="64" x="0" y="-44" height="24" />
<line x2="0" y1="-32" y2="-32" x1="64" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-352" type="pin enc_btn" />
<line x2="0" y1="-352" y2="-352" x1="64" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-224" type="pin enc_ce" />
<line x2="0" y1="-224" y2="-224" x1="64" />
<attrtext style="fontsize:24;fontname:Arial" attrname="PinName" x="72" y="-288" type="pin enc_updown" />
<line x2="0" y1="-288" y2="-288" x1="64" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="472" y="-480" type="pin lcd_newchar" />
<line x2="544" y1="-480" y2="-480" x1="480" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="472" y="-416" type="pin lcd_newpos" />
<line x2="544" y1="-416" y2="-416" x1="480" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="472" y="-352" type="pin lcd_data(7:0)" />
<rect width="64" x="480" y="-364" height="24" />
<line x2="544" y1="-352" y2="-352" x1="480" />
<attrtext style="alignment:RIGHT;fontsize:24;fontname:Arial" attrname="PinName" x="472" y="-288" type="pin freq_out(16:0)" />
<rect width="64" x="480" y="-300" height="24" />
<line x2="544" y1="-288" y2="-288" x1="480" />
</graph>
</symbol>

View File

@@ -36,6 +36,7 @@ entity controller is
enc_ce : in STD_LOGIC;
enc_btn: in STD_LOGIC;
enc_err : in STD_LOGIC;
form : in unsigned(1 downto 0);
lcd_busy: in STD_LOGIC;
lcd_data: out unsigned(7 downto 0);
lcd_newchar: out STD_LOGIC;
@@ -54,39 +55,42 @@ architecture Behavioral of controller is
signal state_reg, state_next : states := S_WAIT;
signal ret_state_reg, ret_state_next: states := S_FORM_PREF;
----- Edge detection registers -----
signal btn_old_reg, btn_old_next : std_logic := '0';
signal enc_old_reg, enc_old_next: std_logic :='0';
signal busy_old_reg, busy_old_next : std_logic := '0';
signal form_old_reg, form_old_next : unsigned (1 downto 0) := (others => '0');
--digitnr which is currently edited 0-4
signal digpos_reg, digpos_next : unsigned(2 downto 0) := (others => '0');
-- for edge detection on btn
signal btn_old_reg, btn_old_next : std_logic := '0';
signal charcnt_reg, charcnt_next : unsigned(3 downto 0) := (others => '0');
-- array 5x 4bit(0-9)
type storage_digit is array (0 to 7) of unsigned (3 downto 0);
signal digit_reg, digit_next : storage_digit := (others => (others => '0'));
signal charcnt_reg, charcnt_next : unsigned(3 downto 0) := (others => '0');
signal lcd_newchar_reg,lcd_newchar_next : std_logic := '0';
signal lcd_newpos_reg,lcd_newpos_next : std_logic := '0';
signal lcd_data_reg, lcd_data_next: unsigned(7 downto 0) :=(others => '0');
type character_array1 is array (0 to 7) of character;
constant str_form_pref : character_array1 := ( 'F', 'o', 'r','m',':', others => ' ' );
type character_array2 is array (0 to 15) of character;
constant str_freq_pref : character_array2 := ( 'F', 'r', 'e','q',':',' ','0','0','0','0','0',' ','H','z', others => ' ' );
--type character_array is array (0 to 15) of character;
--constant line1 : character_array := ( 'h', 'e', 'l','l','o',' ', 'A', 'a', 'r', 'o', 'n', others=> ' ' );
-- for edge detection on lcd_busy
signal busy_old_reg, busy_old_next : std_logic := '0';
signal freq_out_reg, freq_out_next : unsigned (16 downto 0) := (others => '0');
----------------Constants---------------------------------
type character_array_short is array (0 to 7) of character;
constant str_form_pref : character_array_short := ( 'F', 'o', 'r','m',':', others => ' ' );
type character_array_long is array (0 to 15) of character;
constant str_freq_pref : character_array_long := ( 'F', 'r', 'e','q',':',' ','0','0','0','0','0',' ','H','z', others => ' ' );
type character_form_array is array (0 to 3, 0 to 7) of character;
constant str_form : character_form_array := (
('S','q','u','a','r','e',' ',' '),
('S','a','w','t','o','o','t','h'),
('T','r','i','a','n','g','l','e'),
('S','i','n','e',' ',' ',' ',' ')
);
begin
@@ -95,13 +99,17 @@ begin
if(rst='1') then
digpos_reg <= (others => '0');
digit_reg <= (others => (others => '0'));
btn_old_reg <= '0';
enc_old_reg <='0';
busy_old_reg <= '0';
form_old_reg <= "00";
charcnt_reg <= (others => '0');
lcd_newchar_reg <= '0';
lcd_newpos_reg <= '0';
lcd_data_reg <= (others => '0');
busy_old_reg <= '0';
freq_out_reg <=(others => '0');
state_reg <= S_WAIT;
@@ -110,13 +118,17 @@ begin
elsif(rising_edge(clk)) then
digpos_reg <= digpos_next;
digit_reg <= digit_next;
btn_old_reg <= btn_old_next;
enc_old_reg <= enc_old_next;
busy_old_reg <= busy_old_next;
form_old_reg <= form_old_next;
charcnt_reg <= charcnt_next;
lcd_newchar_reg<= lcd_newchar_next;
lcd_newpos_reg<= lcd_newpos_next;
lcd_data_reg <= lcd_data_next;
busy_old_reg <= busy_old_next;
freq_out_reg <= freq_out_next;
state_reg <= state_next;
@@ -132,17 +144,23 @@ begin
lcd_newchar <= lcd_newchar_reg;
lcd_newpos <= lcd_newpos_reg;
NSL: process(digit_reg,enc_updown,enc_ce,enc_err,enc_btn,digpos_reg,btn_old_reg, charcnt_reg, lcd_busy, lcd_data_reg, busy_old_reg, state_reg, ret_state_reg)
NSL: process(digit_reg,enc_updown,enc_ce,enc_err,enc_btn,digpos_reg,btn_old_reg, charcnt_reg, lcd_busy, lcd_data_reg, busy_old_reg, state_reg, ret_state_reg, enc_ce,enc_old_reg, form_old_reg, form)
begin
digit_next <= digit_reg;
digpos_next <= digpos_reg;
btn_old_next <= enc_btn;
busy_old_next <= lcd_busy;
btn_old_next <= btn_old_reg;
enc_old_next <= enc_old_reg;
form_old_next <= form_old_reg;
charcnt_next <= charcnt_reg;
lcd_newchar_next <= '0';
lcd_newpos_next <= '0';
lcd_data_next <= lcd_data_reg;
busy_old_next <= lcd_busy;
state_next <= state_reg;
ret_state_next <= ret_state_reg;
@@ -169,7 +187,7 @@ begin
if(charcnt_reg < 7 ) then
charcnt_next <= charcnt_reg + 1;
ret_state_next <= S_FORM_PREF;
lcd_data_next <= to_unsigned(character'pos(str_form_pref(to_integer(charcnt_reg))),8);
lcd_data_next <= to_unsigned(character'pos(str_form_pref(to_integer(resize(charcnt_reg,3)))),8);
lcd_newchar_next <= '1';
else
charcnt_next <= (others => '0');
@@ -186,13 +204,26 @@ begin
lcd_newchar_next <= '1';
else
charcnt_next <= (others => '0');
state_next <= S_IDLE;
state_next <= S_FORM_CONT;
end if;
when S_FORM_CONT =>
state_next <= S_WAIT;
ret_state_next <= S_FORM_CONT;
charcnt_next <= charcnt_reg + 1;
if(charcnt_reg < 1 ) then
lcd_data_next <= x"86";
lcd_newpos_next <= '1';
elsif(charcnt_reg < 9) then
lcd_data_next <= to_unsigned(character'pos(str_form(to_integer(form),to_integer(resize(charcnt_reg-1,3)))),8);
lcd_newchar_next <= '1';
else
charcnt_next <= (others => '0');
lcd_data_next <= x"4A" - digpos_reg;
lcd_newpos_next <= '1';
ret_state_next <= S_IDLE;
end if;
when S_FREQ_CONT =>
state_next <= S_WAIT;
if(charcnt_reg < 1 ) then
@@ -207,13 +238,26 @@ begin
lcd_newchar_next <= '1';
end if;
when S_IDLE =>
btn_old_next <= enc_btn;
enc_old_next <= enc_ce;
form_old_next <= form;
if(enc_ce='1' and enc_err='0') then
if(form /= form_old_reg) then
state_next <= S_FORM_CONT;
elsif(enc_ce='1' and enc_old_reg ='0' and enc_err='0') then
if(enc_updown='1') then
if(digit_reg(to_integer(digpos_reg)) = to_unsigned(9,4)) then
digit_next(to_integer(digpos_reg)) <= to_unsigned(0,4);
else
digit_next(to_integer(digpos_reg)) <= digit_reg(to_integer(digpos_reg)) + 1;
end if;
else
if(digit_reg(to_integer(digpos_reg)) = to_unsigned(0,4)) then
digit_next(to_integer(digpos_reg)) <= to_unsigned(9,4);
else
digit_next(to_integer(digpos_reg)) <= digit_reg(to_integer(digpos_reg)) -1;
end if;
end if;
state_next <= S_FREQ_CONT;
elsif(enc_btn ='1' and btn_old_reg='0') then
if(digpos_reg = to_unsigned(4,3)) then
@@ -229,13 +273,6 @@ begin
end case;
-- if(lcd_busy = '0' and busy_old_reg ='1' and charcnt_reg < 15) then
-- lcd_data_next <= to_unsigned(character'pos(line1(to_integer(charcnt_reg))),8);
-- lcd_newchar_next <= '1';
-- charcnt_next <= charcnt_reg + 1;
-- end if;
end process NSL;
end Behavioral;

1
io.ucf
View File

@@ -16,6 +16,7 @@ NET "LED0" LOC = "R20" | IOSTANDARD = LVCMOS33 | SLEW = SLOW | DRIVE = 8 ;
NET "SW0" LOC = "V8" | IOSTANDARD = LVCMOS33 ;
NET "SW1" LOC = "U10"| IOSTANDARD = LVCMOS33 ;
NET "BTN_EAST" LOC = "T16" | IOSTANDARD = LVCMOS33 | PULLDOWN;
NET "ROT_A" LOC = "T13" | IOSTANDARD = LVCMOS33 | PULLUP;
NET "ROT_B" LOC = "R14" | IOSTANDARD = LVCMOS33 | PULLUP;
NET "ROT_CENTER" LOC = "R13" | IOSTANDARD = LVCMOS33 | PULLDOWN;

View File

@@ -4,7 +4,7 @@ MODULE toplevel
SUBMODULE dds
INSTANCE XLXI_2
SUBMODULE controller
INSTANCE XLXI_50
INSTANCE XLXI_89
SUBMODULE rotary_dec
INSTANCE XLXI_43
SUBMODULE lcd_driver

View File

@@ -7,11 +7,8 @@
</attr>
<netlist>
<signal name="FORM(1:0)" />
<signal name="FORM(0)" />
<signal name="FORM(1)" />
<signal name="CLK_50MHZ" />
<signal name="XLXN_9(11:0)" />
<signal name="XLXN_10" />
<signal name="SPI_SCK" />
<signal name="DAC_CS" />
<signal name="SPI_MOSI" />
@@ -20,19 +17,14 @@
<signal name="J18_IO2" />
<signal name="J18_IO3" />
<signal name="J18_IO1" />
<signal name="LED0" />
<signal name="SW0" />
<signal name="SW1" />
<signal name="ROT_A" />
<signal name="ROT_B" />
<signal name="XLXN_68" />
<signal name="ROT_CENTER" />
<signal name="XLXN_77" />
<signal name="XLXN_78" />
<signal name="XLXN_79" />
<signal name="LCD_busy" />
<signal name="LCD_RS" />
<signal name="XLXN_70" />
<signal name="LCD_E" />
<signal name="XLXN_176" />
<signal name="LCD_DB(7:0)" />
@@ -41,6 +33,13 @@
<signal name="DAC_CLR" />
<signal name="XLXN_179" />
<signal name="XLXN_180(7:0)" />
<signal name="XLXN_193(1:0)" />
<signal name="FORM(1)" />
<signal name="LED0" />
<signal name="SW0" />
<signal name="SW1" />
<signal name="FORM(0)" />
<signal name="BTN_EAST" />
<port polarity="Input" name="CLK_50MHZ" />
<port polarity="Output" name="SPI_SCK" />
<port polarity="Output" name="DAC_CS" />
@@ -49,9 +48,6 @@
<port polarity="Output" name="J18_IO2" />
<port polarity="Output" name="J18_IO3" />
<port polarity="Output" name="J18_IO1" />
<port polarity="Output" name="LED0" />
<port polarity="Input" name="SW0" />
<port polarity="Input" name="SW1" />
<port polarity="Input" name="ROT_A" />
<port polarity="Input" name="ROT_B" />
<port polarity="Input" name="ROT_CENTER" />
@@ -60,6 +56,10 @@
<port polarity="Output" name="LCD_DB(7:0)" />
<port polarity="Output" name="LCD_RW" />
<port polarity="Output" name="DAC_CLR" />
<port polarity="Output" name="LED0" />
<port polarity="Input" name="SW0" />
<port polarity="Input" name="SW1" />
<port polarity="Input" name="BTN_EAST" />
<blockdef name="spi_driver">
<timestamp>2016-5-20T8:33:2</timestamp>
<rect width="256" x="64" y="-192" height="192" />
@@ -106,21 +106,23 @@
<line x2="32" y1="-64" y2="-64" x1="96" />
</blockdef>
<blockdef name="controller">
<timestamp>2016-6-6T19:48:13</timestamp>
<rect width="304" x="64" y="-448" height="448" />
<timestamp>2016-6-10T7:49:11</timestamp>
<rect width="416" x="64" y="-512" height="512" />
<line x2="0" y1="-480" y2="-480" x1="64" />
<line x2="0" y1="-416" y2="-416" x1="64" />
<line x2="0" y1="-352" y2="-352" x1="64" />
<line x2="0" y1="-96" y2="-96" x1="64" />
<line x2="0" y1="-32" y2="-32" x1="64" />
<line x2="432" y1="-416" y2="-416" x1="368" />
<line x2="0" y1="-288" y2="-288" x1="64" />
<line x2="432" y1="-352" y2="-352" x1="368" />
<rect width="64" x="368" y="-300" height="24" />
<line x2="432" y1="-288" y2="-288" x1="368" />
<rect width="64" x="368" y="-236" height="24" />
<line x2="432" y1="-224" y2="-224" x1="368" />
<line x2="0" y1="-160" y2="-160" x1="64" />
<line x2="0" y1="-96" y2="-96" x1="64" />
<rect width="64" x="0" y="-44" height="24" />
<line x2="0" y1="-32" y2="-32" x1="64" />
<line x2="0" y1="-352" y2="-352" x1="64" />
<line x2="0" y1="-224" y2="-224" x1="64" />
<line x2="0" y1="-288" y2="-288" x1="64" />
<line x2="544" y1="-480" y2="-480" x1="480" />
<line x2="544" y1="-416" y2="-416" x1="480" />
<rect width="64" x="480" y="-364" height="24" />
<line x2="544" y1="-352" y2="-352" x1="480" />
<rect width="64" x="480" y="-300" height="24" />
<line x2="544" y1="-288" y2="-288" x1="480" />
</blockdef>
<blockdef name="rotary_dec">
<timestamp>2016-5-23T16:56:27</timestamp>
@@ -155,15 +157,12 @@
</block>
<block symbolname="spi_driver" name="XLXI_1">
<blockpin signalname="CLK_50MHZ" name="clk" />
<blockpin signalname="XLXN_10" name="rst" />
<blockpin signalname="BTN_EAST" name="rst" />
<blockpin signalname="XLXN_9(11:0)" name="val(11:0)" />
<blockpin signalname="SPI_SCK" name="sck" />
<blockpin signalname="DAC_CS" name="cs" />
<blockpin signalname="SPI_MOSI" name="mosi" />
</block>
<block symbolname="gnd" name="XLXI_7">
<blockpin signalname="XLXN_10" name="G" />
</block>
<block symbolname="buf" name="XLXI_14">
<blockpin signalname="SPI_SCK" name="I" />
<blockpin signalname="J18_IO4" name="O" />
@@ -180,34 +179,6 @@
<blockpin signalname="CLK_50MHZ" name="I" />
<blockpin signalname="J18_IO1" name="O" />
</block>
<block symbolname="buf" name="XLXI_25">
<blockpin signalname="SW0" name="I" />
<blockpin signalname="FORM(0)" name="O" />
</block>
<block symbolname="buf" name="XLXI_26">
<blockpin signalname="SW1" name="I" />
<blockpin signalname="FORM(1)" name="O" />
</block>
<block symbolname="buf" name="XLXI_27">
<blockpin signalname="SW0" name="I" />
<blockpin signalname="LED0" name="O" />
</block>
<block symbolname="gnd" name="XLXI_44">
<blockpin signalname="XLXN_68" name="G" />
</block>
<block symbolname="controller" name="XLXI_50">
<blockpin signalname="CLK_50MHZ" name="clk" />
<blockpin signalname="XLXN_68" name="rst" />
<blockpin signalname="XLXN_79" name="enc_err" />
<blockpin signalname="LCD_busy" name="lcd_busy" />
<blockpin signalname="XLXN_176" name="lcd_newchar" />
<blockpin signalname="ROT_CENTER" name="enc_btn" />
<blockpin signalname="XLXN_179" name="lcd_newpos" />
<blockpin signalname="XLXN_180(7:0)" name="lcd_data(7:0)" />
<blockpin signalname="FREQ(16:0)" name="freq_out(16:0)" />
<blockpin signalname="XLXN_78" name="enc_ce" />
<blockpin signalname="XLXN_77" name="enc_updown" />
</block>
<block symbolname="rotary_dec" name="XLXI_43">
<blockpin signalname="CLK_50MHZ" name="clk" />
<blockpin signalname="ROT_A" name="A" />
@@ -216,12 +187,9 @@
<blockpin signalname="XLXN_78" name="ce" />
<blockpin signalname="XLXN_79" name="error" />
</block>
<block symbolname="gnd" name="XLXI_46">
<blockpin signalname="XLXN_70" name="G" />
</block>
<block symbolname="lcd_driver" name="XLXI_88">
<blockpin signalname="CLK_50MHZ" name="clk" />
<blockpin signalname="XLXN_70" name="reset" />
<blockpin signalname="BTN_EAST" name="reset" />
<blockpin signalname="XLXN_176" name="new_character" />
<blockpin signalname="XLXN_179" name="new_pos" />
<blockpin signalname="XLXN_180(7:0)" name="data(7:0)" />
@@ -240,31 +208,38 @@
<block symbolname="vcc" name="XLXI_20">
<blockpin signalname="XLXN_30" name="P" />
</block>
<block symbolname="controller" name="XLXI_89">
<blockpin signalname="CLK_50MHZ" name="clk" />
<blockpin signalname="BTN_EAST" name="rst" />
<blockpin signalname="XLXN_79" name="enc_err" />
<blockpin signalname="LCD_busy" name="lcd_busy" />
<blockpin signalname="FORM(1:0)" name="form(1:0)" />
<blockpin signalname="ROT_CENTER" name="enc_btn" />
<blockpin signalname="XLXN_78" name="enc_ce" />
<blockpin signalname="XLXN_77" name="enc_updown" />
<blockpin signalname="XLXN_176" name="lcd_newchar" />
<blockpin signalname="XLXN_179" name="lcd_newpos" />
<blockpin signalname="XLXN_180(7:0)" name="lcd_data(7:0)" />
<blockpin signalname="FREQ(16:0)" name="freq_out(16:0)" />
</block>
<block symbolname="buf" name="XLXI_25">
<blockpin signalname="SW0" name="I" />
<blockpin signalname="FORM(0)" name="O" />
</block>
<block symbolname="buf" name="XLXI_26">
<blockpin signalname="SW1" name="I" />
<blockpin signalname="FORM(1)" name="O" />
</block>
<block symbolname="buf" name="XLXI_27">
<blockpin signalname="SW0" name="I" />
<blockpin signalname="LED0" name="O" />
</block>
</netlist>
<sheet sheetnum="1" width="5440" height="3520">
<instance x="2944" y="2192" name="XLXI_2" orien="R0">
</instance>
<instance x="3536" y="2048" name="XLXI_1" orien="R0">
</instance>
<branch name="FORM(1:0)">
<attrtext style="alignment:SOFT-BCENTER;fontsize:28;fontname:Arial" attrname="Name" x="2816" y="2160" type="branch" />
<wire x2="2816" y1="2160" y2="2176" x1="2816" />
<wire x2="2816" y1="2176" y2="2208" x1="2816" />
<wire x2="2944" y1="2160" y2="2160" x1="2816" />
</branch>
<bustap x2="2720" y1="2176" y2="2176" x1="2816" />
<bustap x2="2720" y1="2208" y2="2208" x1="2816" />
<branch name="FORM(0)">
<attrtext style="alignment:SOFT-BCENTER;fontsize:28;fontname:Arial" attrname="Name" x="2624" y="2176" type="branch" />
<wire x2="2624" y1="2176" y2="2176" x1="2512" />
<wire x2="2720" y1="2176" y2="2176" x1="2624" />
</branch>
<branch name="FORM(1)">
<attrtext style="alignment:SOFT-BCENTER;fontsize:28;fontname:Arial" attrname="Name" x="2624" y="2240" type="branch" />
<wire x2="2624" y1="2240" y2="2240" x1="2512" />
<wire x2="2720" y1="2240" y2="2240" x1="2624" />
<wire x2="2720" y1="2208" y2="2240" x1="2720" />
</branch>
<branch name="CLK_50MHZ">
<wire x2="2944" y1="2032" y2="2032" x1="2912" />
</branch>
@@ -273,13 +248,6 @@
<wire x2="3424" y1="2016" y2="2032" x1="3424" />
<wire x2="3536" y1="2016" y2="2016" x1="3424" />
</branch>
<instance x="3264" y="1936" name="XLXI_7" orien="R0" />
<branch name="XLXN_10">
<wire x2="3328" y1="1744" y2="1808" x1="3328" />
<wire x2="3408" y1="1744" y2="1744" x1="3328" />
<wire x2="3408" y1="1744" y2="1952" x1="3408" />
<wire x2="3536" y1="1952" y2="1952" x1="3408" />
</branch>
<branch name="SPI_SCK">
<wire x2="3952" y1="1888" y2="1888" x1="3920" />
<wire x2="4080" y1="1888" y2="1888" x1="3952" />
@@ -300,7 +268,7 @@
</branch>
<branch name="FREQ(16:0)">
<attrtext style="alignment:SOFT-LEFT;fontsize:28;fontname:Arial" attrname="Name" x="2763" y="2096" type="branch" />
<wire x2="2592" y1="1536" y2="1536" x1="2224" />
<wire x2="2592" y1="1536" y2="1536" x1="2336" />
<wire x2="2592" y1="1536" y2="2096" x1="2592" />
<wire x2="2944" y1="2096" y2="2096" x1="2592" />
</branch>
@@ -326,24 +294,7 @@
<branch name="J18_IO1">
<wire x2="3888" y1="1632" y2="1632" x1="3856" />
</branch>
<branch name="LED0">
<wire x2="2560" y1="2320" y2="2320" x1="2512" />
</branch>
<instance x="2288" y="2208" name="XLXI_25" orien="R0" />
<instance x="2288" y="2272" name="XLXI_26" orien="R0" />
<branch name="SW0">
<wire x2="2256" y1="2176" y2="2176" x1="2192" />
<wire x2="2256" y1="2176" y2="2320" x1="2256" />
<wire x2="2288" y1="2320" y2="2320" x1="2256" />
<wire x2="2288" y1="2176" y2="2176" x1="2256" />
</branch>
<branch name="SW1">
<wire x2="2288" y1="2240" y2="2240" x1="2192" />
</branch>
<instance x="2288" y="2352" name="XLXI_27" orien="R0" />
<branch name="CLK_50MHZ">
<wire x2="1776" y1="1136" y2="1136" x1="1712" />
<wire x2="1776" y1="1136" y2="1344" x1="1776" />
<wire x2="1792" y1="1344" y2="1344" x1="1776" />
</branch>
<branch name="ROT_A">
@@ -355,17 +306,9 @@
<branch name="CLK_50MHZ">
<wire x2="1136" y1="1536" y2="1536" x1="1056" />
</branch>
<instance x="1600" y="1376" name="XLXI_44" orien="R0" />
<branch name="XLXN_68">
<wire x2="1744" y1="1248" y2="1248" x1="1664" />
<wire x2="1744" y1="1248" y2="1408" x1="1744" />
<wire x2="1792" y1="1408" y2="1408" x1="1744" />
</branch>
<branch name="ROT_CENTER">
<wire x2="1792" y1="1472" y2="1472" x1="1760" />
</branch>
<instance x="1792" y="1760" name="XLXI_50" orien="R0">
</instance>
<branch name="XLXN_77">
<wire x2="1792" y1="1536" y2="1536" x1="1520" />
</branch>
@@ -387,15 +330,7 @@
<wire x2="3184" y1="1168" y2="1168" x1="3152" />
</branch>
<branch name="LCD_RS">
<wire x2="3168" y1="1328" y2="1328" x1="3152" />
<wire x2="3232" y1="1328" y2="1328" x1="3168" />
</branch>
<instance x="2192" y="1232" name="XLXI_46" orien="R0" />
<branch name="XLXN_70">
<wire x2="2256" y1="1088" y2="1104" x1="2256" />
<wire x2="2336" y1="1088" y2="1088" x1="2256" />
<wire x2="2336" y1="1088" y2="1232" x1="2336" />
<wire x2="2736" y1="1232" y2="1232" x1="2336" />
<wire x2="3232" y1="1328" y2="1328" x1="3152" />
</branch>
<iomarker fontsize="28" x="2912" y="2032" name="CLK_50MHZ" orien="R180" />
<iomarker fontsize="28" x="4080" y="1888" name="SPI_SCK" orien="R0" />
@@ -406,10 +341,6 @@
<iomarker fontsize="28" x="3888" y="1632" name="J18_IO1" orien="R0" />
<iomarker fontsize="28" x="4336" y="1808" name="J18_IO4" orien="R0" />
<iomarker fontsize="28" x="3472" y="1632" name="CLK_50MHZ" orien="R180" />
<iomarker fontsize="28" x="2560" y="2320" name="LED0" orien="R0" />
<iomarker fontsize="28" x="2192" y="2240" name="SW1" orien="R180" />
<iomarker fontsize="28" x="2192" y="2176" name="SW0" orien="R180" />
<iomarker fontsize="28" x="1712" y="1136" name="CLK_50MHZ" orien="R180" />
<iomarker fontsize="28" x="1056" y="1600" name="ROT_A" orien="R180" />
<iomarker fontsize="28" x="1056" y="1664" name="ROT_B" orien="R180" />
<iomarker fontsize="28" x="1056" y="1536" name="CLK_50MHZ" orien="R180" />
@@ -418,32 +349,26 @@
</instance>
<iomarker fontsize="28" x="2656" y="1168" name="CLK_50MHZ" orien="R180" />
<branch name="CLK_50MHZ">
<wire x2="2672" y1="1168" y2="1168" x1="2656" />
<wire x2="2720" y1="1168" y2="1168" x1="2672" />
<wire x2="2736" y1="1168" y2="1168" x1="2720" />
<wire x2="2736" y1="1168" y2="1168" x1="2656" />
</branch>
<branch name="XLXN_176">
<wire x2="2240" y1="1344" y2="1344" x1="2224" />
<wire x2="2480" y1="1344" y2="1344" x1="2240" />
<wire x2="2480" y1="1344" y2="1344" x1="2336" />
<wire x2="2480" y1="1296" y2="1344" x1="2480" />
<wire x2="2736" y1="1296" y2="1296" x1="2480" />
</branch>
<branch name="LCD_DB(7:0)">
<wire x2="3168" y1="1408" y2="1408" x1="3152" />
<wire x2="3232" y1="1408" y2="1408" x1="3168" />
<wire x2="3232" y1="1408" y2="1408" x1="3152" />
</branch>
<iomarker fontsize="28" x="3232" y="1248" name="LCD_E" orien="R0" />
<branch name="LCD_E">
<wire x2="3184" y1="1248" y2="1248" x1="3152" />
<wire x2="3232" y1="1248" y2="1248" x1="3184" />
<wire x2="3232" y1="1248" y2="1248" x1="3152" />
</branch>
<iomarker fontsize="28" x="3232" y="1328" name="LCD_RS" orien="R0" />
<iomarker fontsize="28" x="3232" y="1408" name="LCD_DB(7:0)" orien="R0" />
<instance x="4144" y="1264" name="XLXI_51" orien="R0" />
<branch name="LCD_RW">
<wire x2="4240" y1="1072" y2="1072" x1="4208" />
<wire x2="4208" y1="1072" y2="1120" x1="4208" />
<wire x2="4208" y1="1120" y2="1136" x1="4208" />
<wire x2="4208" y1="1072" y2="1136" x1="4208" />
</branch>
<iomarker fontsize="28" x="4240" y="1072" name="LCD_RW" orien="R0" />
<instance x="3952" y="2224" name="XLXI_19" orien="R0" />
@@ -456,14 +381,65 @@
<instance x="3856" y="2192" name="XLXI_20" orien="R0" />
<iomarker fontsize="28" x="4208" y="2192" name="DAC_CLR" orien="R0" />
<branch name="XLXN_179">
<wire x2="2480" y1="1408" y2="1408" x1="2224" />
<wire x2="2480" y1="1408" y2="1408" x1="2336" />
<wire x2="2480" y1="1360" y2="1408" x1="2480" />
<wire x2="2736" y1="1360" y2="1360" x1="2480" />
</branch>
<branch name="XLXN_180(7:0)">
<wire x2="2480" y1="1472" y2="1472" x1="2224" />
<wire x2="2480" y1="1472" y2="1472" x1="2336" />
<wire x2="2480" y1="1424" y2="1472" x1="2480" />
<wire x2="2736" y1="1424" y2="1424" x1="2480" />
</branch>
<instance x="1792" y="1824" name="XLXI_89" orien="R0">
</instance>
<bustap x2="1472" y1="2064" y2="2064" x1="1568" />
<bustap x2="1472" y1="2000" y2="2000" x1="1568" />
<instance x="1040" y="2032" name="XLXI_25" orien="R0" />
<instance x="1040" y="2096" name="XLXI_26" orien="R0" />
<instance x="1040" y="2176" name="XLXI_27" orien="R0" />
<branch name="FORM(1)">
<attrtext style="alignment:SOFT-BCENTER;fontsize:28;fontname:Arial" attrname="Name" x="1376" y="2064" type="branch" />
<wire x2="1376" y1="2064" y2="2064" x1="1264" />
<wire x2="1472" y1="2064" y2="2064" x1="1376" />
</branch>
<branch name="LED0">
<wire x2="1312" y1="2144" y2="2144" x1="1264" />
</branch>
<branch name="SW0">
<wire x2="1008" y1="2000" y2="2000" x1="944" />
<wire x2="1008" y1="2000" y2="2144" x1="1008" />
<wire x2="1040" y1="2144" y2="2144" x1="1008" />
<wire x2="1040" y1="2000" y2="2000" x1="1008" />
</branch>
<branch name="SW1">
<wire x2="1040" y1="2064" y2="2064" x1="944" />
</branch>
<branch name="FORM(0)">
<attrtext style="alignment:SOFT-BCENTER;fontsize:28;fontname:Arial" attrname="Name" x="1376" y="2000" type="branch" />
<wire x2="1376" y1="2000" y2="2000" x1="1264" />
<wire x2="1472" y1="2000" y2="2000" x1="1376" />
</branch>
<iomarker fontsize="28" x="1312" y="2144" name="LED0" orien="R0" />
<iomarker fontsize="28" x="944" y="2064" name="SW1" orien="R180" />
<iomarker fontsize="28" x="944" y="2000" name="SW0" orien="R180" />
<branch name="FORM(1:0)">
<attrtext style="alignment:SOFT-BCENTER;fontsize:28;fontname:Arial" attrname="Name" x="1568" y="1792" type="branch" />
<wire x2="1792" y1="1792" y2="1792" x1="1568" />
<wire x2="1568" y1="1792" y2="2160" x1="1568" />
<wire x2="2944" y1="2160" y2="2160" x1="1568" />
</branch>
<branch name="BTN_EAST">
<wire x2="1792" y1="1408" y2="1408" x1="1760" />
</branch>
<iomarker fontsize="28" x="1760" y="1408" name="BTN_EAST" orien="R180" />
<iomarker fontsize="28" x="1776" y="1344" name="CLK_50MHZ" orien="R180" />
<branch name="BTN_EAST">
<wire x2="2736" y1="1232" y2="1232" x1="2704" />
</branch>
<iomarker fontsize="28" x="2704" y="1232" name="BTN_EAST" orien="R180" />
<branch name="BTN_EAST">
<wire x2="3536" y1="1952" y2="1952" x1="3504" />
</branch>
<iomarker fontsize="28" x="3504" y="1952" name="BTN_EAST" orien="R180" />
</sheet>
</drawing>

View File

@@ -233,36 +233,36 @@
<status xil_pn:value="OutputChanged"/>
<status xil_pn:value="OutputRemoved"/>
</transform>
<transform xil_pn:end_ts="1464958322" xil_pn:name="TRAN_copyInitialToXSTAbstractSynthesis" xil_pn:start_ts="1464958322">
<transform xil_pn:end_ts="1465545215" xil_pn:name="TRAN_copyInitialToXSTAbstractSynthesis" xil_pn:start_ts="1465545215">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1465242537" xil_pn:in_ck="6038244062278950263" xil_pn:name="TRAN_schematicsToHdl" xil_pn:prop_ck="6927427346963598489" xil_pn:start_ts="1465242536">
<transform xil_pn:end_ts="1465547140" xil_pn:in_ck="6038244062278950263" xil_pn:name="TRAN_schematicsToHdl" xil_pn:prop_ck="6927427346963598489" xil_pn:start_ts="1465547139">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="toplevel.vhf"/>
</transform>
<transform xil_pn:end_ts="1464970890" xil_pn:name="TRAN_regenerateCores" xil_pn:prop_ck="-1929794406770174374" xil_pn:start_ts="1464970890">
<transform xil_pn:end_ts="1465545216" xil_pn:name="TRAN_regenerateCores" xil_pn:prop_ck="-1929794406770174374" xil_pn:start_ts="1465545216">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1464970890" xil_pn:name="TRAN_SubProjectAbstractToPreProxy" xil_pn:start_ts="1464970890">
<transform xil_pn:end_ts="1465545216" xil_pn:name="TRAN_SubProjectAbstractToPreProxy" xil_pn:start_ts="1465545216">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1464970890" xil_pn:name="TRAN_xawsTohdl" xil_pn:prop_ck="-2239360189155701135" xil_pn:start_ts="1464970890">
<transform xil_pn:end_ts="1465545216" xil_pn:name="TRAN_xawsTohdl" xil_pn:prop_ck="-2239360189155701135" xil_pn:start_ts="1465545216">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1464970890" xil_pn:name="TRAN_SubProjectPreToStructuralProxy" xil_pn:prop_ck="9102341965431189672" xil_pn:start_ts="1464970890">
<transform xil_pn:end_ts="1465545216" xil_pn:name="TRAN_SubProjectPreToStructuralProxy" xil_pn:prop_ck="9102341965431189672" xil_pn:start_ts="1465545216">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1464970890" xil_pn:name="TRAN_platgen" xil_pn:prop_ck="7072966905182239268" xil_pn:start_ts="1464970890">
<transform xil_pn:end_ts="1465545216" xil_pn:name="TRAN_platgen" xil_pn:prop_ck="7072966905182239268" xil_pn:start_ts="1465545216">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1465242740" xil_pn:in_ck="-5804926608689456155" xil_pn:name="TRANEXT_xstsynthesize_spartan3e" xil_pn:prop_ck="1663716282806445198" xil_pn:start_ts="1465242726">
<transform xil_pn:end_ts="1465548337" xil_pn:in_ck="-5804926608689456155" xil_pn:name="TRANEXT_xstsynthesize_spartan3e" xil_pn:prop_ck="1663716282806445198" xil_pn:start_ts="1465548321">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="WarningsGenerated"/>
<status xil_pn:value="ReadyToRun"/>
@@ -285,11 +285,11 @@
<outfile xil_pn:name="webtalk_pn.xml"/>
<outfile xil_pn:name="xst"/>
</transform>
<transform xil_pn:end_ts="1464970922" xil_pn:in_ck="4242637380" xil_pn:name="TRAN_compileBCD2" xil_pn:prop_ck="4784894232377633197" xil_pn:start_ts="1464970922">
<transform xil_pn:end_ts="1465547155" xil_pn:in_ck="4242637380" xil_pn:name="TRAN_compileBCD2" xil_pn:prop_ck="4784894232377633197" xil_pn:start_ts="1465547155">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
</transform>
<transform xil_pn:end_ts="1465242745" xil_pn:in_ck="-2091007341535647977" xil_pn:name="TRANEXT_ngdbuild_FPGA" xil_pn:prop_ck="-1538882668640856751" xil_pn:start_ts="1465242740">
<transform xil_pn:end_ts="1465548343" xil_pn:in_ck="-2091007341535647977" xil_pn:name="TRANEXT_ngdbuild_FPGA" xil_pn:prop_ck="-1538882668640856751" xil_pn:start_ts="1465548337">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="_ngo"/>
@@ -298,7 +298,7 @@
<outfile xil_pn:name="toplevel.ngd"/>
<outfile xil_pn:name="toplevel_ngdbuild.xrpt"/>
</transform>
<transform xil_pn:end_ts="1465242752" xil_pn:in_ck="1621356785167787192" xil_pn:name="TRANEXT_map_spartan3" xil_pn:prop_ck="570889668722473129" xil_pn:start_ts="1465242745">
<transform xil_pn:end_ts="1465548349" xil_pn:in_ck="1621356785167787192" xil_pn:name="TRANEXT_map_spartan3" xil_pn:prop_ck="570889668722473129" xil_pn:start_ts="1465548343">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForOutputs"/>
@@ -313,7 +313,7 @@
<outfile xil_pn:name="toplevel_summary.xml"/>
<outfile xil_pn:name="toplevel_usage.xml"/>
</transform>
<transform xil_pn:end_ts="1465242770" xil_pn:in_ck="985354266144665770" xil_pn:name="TRANEXT_par_spartan3" xil_pn:prop_ck="-988662182046631445" xil_pn:start_ts="1465242752">
<transform xil_pn:end_ts="1465548368" xil_pn:in_ck="985354266144665770" xil_pn:name="TRANEXT_par_spartan3" xil_pn:prop_ck="-988662182046631445" xil_pn:start_ts="1465548349">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="_xmsgs/par.xmsgs"/>
@@ -327,7 +327,7 @@
<outfile xil_pn:name="toplevel_pad.txt"/>
<outfile xil_pn:name="toplevel_par.xrpt"/>
</transform>
<transform xil_pn:end_ts="1465242777" xil_pn:in_ck="8640606860472830956" xil_pn:name="TRANEXT_bitFile_spartan3a" xil_pn:prop_ck="-426368325978129584" xil_pn:start_ts="1465242770">
<transform xil_pn:end_ts="1465548376" xil_pn:in_ck="8640606860472830956" xil_pn:name="TRANEXT_bitFile_spartan3a" xil_pn:prop_ck="-426368325978129584" xil_pn:start_ts="1465548368">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="_xmsgs/bitgen.xmsgs"/>
@@ -339,7 +339,7 @@
<outfile xil_pn:name="webtalk.log"/>
<outfile xil_pn:name="webtalk_pn.xml"/>
</transform>
<transform xil_pn:end_ts="1465242109" xil_pn:in_ck="6038244062278931960" xil_pn:name="TRAN_configureTargetDevice" xil_pn:prop_ck="5767926783713760761" xil_pn:start_ts="1465242105">
<transform xil_pn:end_ts="1465540899" xil_pn:in_ck="6038244062278931960" xil_pn:name="TRAN_configureTargetDevice" xil_pn:prop_ck="5767926783713760761" xil_pn:start_ts="1465540897">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<status xil_pn:value="OutOfDateForInputs"/>
@@ -347,7 +347,7 @@
<status xil_pn:value="InputChanged"/>
<status xil_pn:value="InputRemoved"/>
</transform>
<transform xil_pn:end_ts="1465242770" xil_pn:in_ck="6034042283462732464" xil_pn:name="TRAN_postRouteTrce" xil_pn:prop_ck="445577401284416186" xil_pn:start_ts="1465242766">
<transform xil_pn:end_ts="1465548368" xil_pn:in_ck="6034042283462732464" xil_pn:name="TRAN_postRouteTrce" xil_pn:prop_ck="445577401284416186" xil_pn:start_ts="1465548364">
<status xil_pn:value="SuccessfullyRun"/>
<status xil_pn:value="ReadyToRun"/>
<outfile xil_pn:name="_xmsgs/trce.xmsgs"/>