VHDL: с-выбором и несколькими значениями

#vhdl #fpga

Вопрос:

У меня есть этот код для моей платы FPGA с 5 кнопками и 4 переключателями (sw(0), sw(1), sw(2) и sw(3)). Когда вы нажимаете одну кнопку на плате FPGA, на экране отображается один символ ASCII. Как я могу переписать этот код, чтобы он делал следующее: когда sw(0) равно 0, кнопки ничего не делают; когда sw(0) равно 1, все кнопки должны работать нормально. Использую ли я блок процесса или? Я уже включил вектор sw в первый порт.

Заранее спасибо

 library ieee; use ieee.std_logic_1164.all;  entity slova is  port (  btn_left, btn_right, btn_up, btn_down, btn_f1: in std_logic;  rs232_tx: out std_logic;  clk_25m: in std_logic;  sw: in std_logic_vector(3 downto 0);  led: out std_logic_vector(7 downto 0)  ); end slova;   architecture behavioral of slova is  signal code: std_logic_vector(7 downto 0);  signal btns: std_logic_vector(4 downto 0);  begin   btns lt;= btn_f1 amp; btn_left amp; btn_down amp; btn_up amp; btn_right;    with btns select  code lt;=  "00000000" when "00000", -- ASCII NULL  "01000001" when "01000",   "01110010" when "00100",  "01101101" when "00010",   "01101001" when "00001",   "01001011" when "11000",   "01100001" when "10100",   "01101110" when "10010",   "01110100" when "10001",   "--------" when others;  led lt;= code;   serializer: entity serial_tx port map (  clk =gt; clk_25m, byte_in =gt; code, ser_out =gt; rs232_tx  ); end architecture;  

Комментарии:

1. Любое количество способов сделать это — вы можете использовать процесс, но вам это не нужно.

2. Наряду с одновременным назначением выбранного сигнала, которое уточняется до эквивалента оператора case в процессе, существует также одновременное назначение условного сигнала, которое содержит оператор if в эквиваленте разработки процесса. Параллельные операторы представляют либо процессы, либо операторы блоков, обеспечивающие иерархию и процессы проектирования.