优化VHDL代码

优化VHDL代码,vhdl,Vhdl,我制作了这个VHDL代码,用于写入USB芯片 它都在case语句中运行,每个操作(写入、读取等)都在该语句中实现 下面的两个写寄存器部分相等,只是地址和数据不同 这可以通过一个程序或什么来简化吗 -------- WRITE REGISTER --------- when s10 => -- Txd Cmd txdata(7 downto 6) <= "10";

我制作了这个VHDL代码,用于写入USB芯片

它都在case语句中运行,每个操作(写入、读取等)都在该语句中实现

下面的两个写寄存器部分相等,只是地址和数据不同

这可以通过一个程序或什么来简化吗

            -------- WRITE REGISTER ---------
            when s10 =>
                -- Txd Cmd
                txdata(7 downto 6) <=  "10";        -- CMD = register write
                txdata(5 downto 0) <=  "000100";    -- address
                state := s11;
            when s11 => 
                -- write reg
                if nxt = '1' then
                    txdata <= X"45";    -- output on clock rising edge when nxt is high
                    stp <= '1';                     
                    state := s12;
                end if;
            when s12 =>
                stp <= '0';                             
                txdata <= "00000000";       -- idle                 
                state := s20;

            -------- WRITE REGISTER ---------
            when s20 =>
                -- Txd Cmd
                txdata(7 downto 6) <=  "10";        -- CMD = register write
                txdata(5 downto 0) <=  "110101";    -- address
                state := s21;
            when s21 => 
                -- write reg
                if nxt = '1' then
                    txdata <= X"04";                                            
                    stp <= '1';                     
                    state := s22;
                end if;
            when s22 =>
                stp <= '0';                             
                txdata <= "00000000";       -- idle                 
                state := s30;
-----写入寄存器---------
当s10=>
--Txd命令

txdata(7到6)我建议您使用一个地址和数据值寄存器。然后你必须只描述一个实际的书写,其他的一切只是注册内容的变化。这可以在开始写作之前的状态下完成…

是的,使用过程。这不是你已经问过的吗


您为什么要这样做?您将使代码比需要的复杂得多。你对代码有问题吗?您是否需要以任何方式对其进行优化,或者您只是想这样做,因为….?因为我在重复我自己,所以如果我需要更改写入序列中的某些内容,我将不得不在所有写入序列中更改它。可能的重复