CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

制御ロジックのVHDL化

イメージ 1

CPLDの回路図ファイルをWin98上のProjectNavigator4.2からXP上のWebPackISE8.2iに
持ってきたら74系TTLのモデルライブラリが無くなっているらしく歯抜けになってしまいました。
いずれVHDLで記述するつもりだったので機能モジュールごとに書き換えてこれをシンボル化しました。
はじめはこのモジュール同志を回路図で結線してますが動作が確認できたらマッピングして
VHDL化する予定。
以下はキースキャンの例です。


architecture Behavioral of keyscan is

signal CNT_TMP:std_logic_vector(1 downto 0);

function encode5 (KDATA:in std_logic_vector) return std_logic_vector is
 begin
  case KDATA(4 downto 0) is
   when "00001" => return("000");
   when "00010" => return("001");
   when "00100" => return("010");
   when "01000" => return("011");
   when "10000" => return("100");
   when others => return("XXX");
 end case;
end encode5;

begin
process(CLK,RST) begin
 if(RST = '1') then
  CNT_TMP <="00";
  elsif(CLK'event and CLK = '1') then
 if(CNT_TMP = "10") then
  CNT_TMP <= "00";
  else
  CNT_TMP <= CNT_TMP + '1';
  end if;
 end if;
 case CNT_TMP is
  when "00" => LINE <= "001";
  when "01" => LINE <= "010";
  when "10" => LINE <= "100";
  when others => LINE <= "XXX";
 end case;
end process;

process(KEY,CLK) begin
 if(CLK'event and CLK = '1') then
  if(KEY /="00000") then
   DATA <= "000" & CNT_TMP & encode5(KEY);
  end if;
 end if;
end process;

GS<=or_reduce(KEY);

end Behavioral;