4.1 CPLD1 C37064VP100的编程 4.1.1RAM和EEPROM的使能信号选择 C_RamState: process (WR,IOS) begin if(WR’event and WR=’1’)then if (Addr="1110"and IOS=’0’) then Ram_State<=Data(0); end if; end if; end process; with Ram_State select EE_cs<=DS when ’1’ , ’1’when ’0’; with Ram_State select RAM_cs<=DS when ’0’, ’1’ when ’1’; IOS接DSP的I/O空间访问选通信号/IS,当DSP访问I/O空间时,/IS变低有效,因而可通过OUT指令写数据到I/O地址E000H~EFFFH即可对RAM和EEPROM进行切换。当写入的数据最低位为0时,RAM_CS接到DS,即RAM映射到数据空间,否则EEPROM映射到数据空间。 4.1.2 LCD模块控制 LCD_OUT:Process(WR,IOS,Data) begin if(WR’event and WR=’1’)then if (Addr="1100" and IOS=’0’) then LCD_COM<=Data; elsif(Addr="1010" and IOS=’0’) THEN LCD_DOUT<=Data; end if; end if; end process LCD_OUT; LCD_State: process (WR,IOS,Data,Addr) begin if(WR’event and WR=’1’)then if (Addr="1110"and IOS=’0’) then LCD_WRRD_State<=Data(1); end if; end if; end process; LCDIn_E<=LCD_WRRD_State or RD or IOS or Addr(3) or Addr(2) or Addr(1) or Addr(0) ; LCDOut_E<=not LCD_WRRD_State; 当DSP用OUT指令写数据到I/O空间地址最高4位ADDR=1110的时候,数据次低位DATA(1)控制是写入数据还是读入数据。然后OUT地址ADDR=1100时,输出LCD命令字,ADDR=1010时,输出LCD数据。或者IN地址ADDR=0000时,读入LCD数据。 4.1.3 LED使能信号线控制 由于篇幅关系,而且五个使能线译码相类似,所以下面只列出WAVE1_CS的译码使能代码: if (Addr="0001" and IOS=’0’ )then Wave1_cs<=’0’; Wave2_cs<=’1’; STATUS_cs<=’1’; PALTE_cs<=’1’; MODE_CS<=<=’1’; 当用OUT指令写数据到I/O空间地址最高4位ADDR=0001时,使能WAVE1_CS,即可对波长选择1上的LED指示灯进行控制。其余使能信号以此类推。 4.2 CPLD2 C37032VP44 的编程 由于各组LED译码输出类似,这里只列出WAVE1_LED的输出以供参考。 process(WR,Wave1_cs,Data) begin if(WR’event and WR=’1’)then if (Wave1_cs=’0’) then templ<=Data(2)
|