⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 低频数字式相位测量仪(程序清单).txt

📁 低频相位测量系统
💻 TXT
📖 第 1 页 / 共 5 页
字号:
      vc:=0; 
                    
      tmpp<=conv_std_logic_vector((conv_integer(data2_2)*100+conv_integer(data1_2)*10+conv_integer(data0_2)),9);
            else 
                       if vc=12499999 then vc:=0;
                  if butt1_2='1' then
                       if tmpp<"101100111" then tmpp<=tmpp+1;
                       elsif tmpp="101100111" then tmpp<="101100111";
                       end if;
                  elsif butt2_2='1' then 
                       if tmpp>"000000000" then tmpp<=tmpp-1;
                       elsif tmpp="000000000" then tmpp<="000000000";
                       end if;
                  end if;
                           else vc:=vc+1;
                           end if;
                           if tmp>0 then
                      if coun<qq then coun<=coun+tmp; b<=b+1;  
                      else 
                          if count=b then count:=0;
                              if tmpp>"000000000" then
                                  if sign='1' then  f0<=tmpp; sign<='0'; 
                                  else 
                                     if f0="101100111" then f0<="000000000";    
                                     else f0<=f0+1; 
                                                 end if;
                                  end if;
                              else 
                                  if f0="101100111" then f0<="000000000";      
                                  else f0<=f0+1; 
                                              end if;
                              end if;
                              if f1="101100111" then f1<="000000000";     
                              else f1<=f1+1; 
                                          end if;
                          else count:=count+1; 
                          end if;
                      end if;
               end if;
            end if;
        else
          if butt0_2='1' then
                 if set_2='1' then 
      sign1<='1';tmp<=conv_integer(data3_2)*1000+conv_integer(data2_2)*100+conv_integer(data1_2)*10+conv_integer(data0_2); 

                             coun<=0; b<=0; amp0<="0111111111"; 
      amp1<="0111111111"; f0<="000000000"; f1<="000000000";
                     end if;
          else
             if set_2='1' then 
      tmp<=conv_integer(data3_2)*1000+conv_integer(data2_2)*100+conv_integer(data1_2)*10+conv_integer(data0_2); 
                  
                            coun<=0; b<=0; amp0<="0111111111"; 
      amp1<="0111111111"; f0<="000000000"; f1<="000000000";
                                                sign1<='0';
             else
                 if tmp>0 then
                      if coun<qq then coun<=coun+tmp; b<=b+1;  
                      else 
                          if count=b then count:=0;
                              if tmpp>"000000000" then
                                  if sign='1' then  f0<=tmpp; sign<='0'; 
                                  else 
                                     if f0="101100111" then f0<="000000000";    
                                     else f0<=f0+1; 
                                                 end if;
                                  end if;
                              else 
                                  if f0="101100111" then f0<="000000000";      
                                  else f0<=f0+1; 
                                              end if;
                              end if;
                              if f1="101100111" then f1<="000000000";     
                              else f1<=f1+1; 
                                          end if;
                          else count:=count+1; 
                          end if;
                      end if;
                 end if;
             end if;
              end if;
        end if;
       else 
                          if cc=b then cc:=0;
                              if tmpp>"000000000" then
                                  if sign='1' then  f0<=tmpp; sign<='0'; 
                                  else 
                                     if f0="101100111" then f0<="000000000";    
                                     else f0<=f0+1; 
                                                 end if;
                                  end if;
                              else 
                                  if f0="101100111" then f0<="000000000";      
                                  else f0<=f0+1; 
                                              end if;
                              end if;
                              if f1="101100111" then f1<="000000000";     
                              else f1<=f1+1; 
                                          end if;
                          else cc:=cc+1; 
                          end if;
         if count0=3249999 then count0:=0;
                      if butt1_2='1' then
                    if sw1_2='1' then
                                       if sw2_2='0' then    
                           if amp0<"1111111111" then amp0<=amp0+1;
                                                       else amp0<="1111111111";
                           end if; 
                       else
                           if amp1<"1111111111" then amp1<=amp1+1;
                                                       else amp1<="1111111111";
                           end if;
                       end if;
                                    end if;
              elsif butt2_2='1' then
                    if sw1_2='1' then
                                        if sw2_2='0' then  
                           if amp0>"0000000000" then amp0<=amp0-1;
                                                       else amp0<="0000000000";
                           end if;                    
                        else
                           if amp1>"0000000000" then amp1<=amp1-1;
                                                       else amp1<="0000000000";
                           end if;
                        end if;
                                    end if;
               end if;
         else count0:=count0+1;
         end if;
      end if;
      end if;
      end process;
      a0_2<=amp0; a1_2<=amp1;
      end Behavioral;
      (2)      数据ROM模块
      library IEEE;
      use IEEE.STD_LOGIC_1164.ALL;
      use IEEE.STD_LOGIC_ARITH.ALL;
      use IEEE.STD_LOGIC_UNSIGNED.ALL;
       
      entity wave_generator is
          Port (clk1 : in std_logic;
                      f_1:in std_logic_vector(8 downto 0);
                 d : out std_logic_vector(7 downto 0));
      end wave_generator;
       
      architecture Behavioral of wave_generator is
      begin
      process(clk1,f_1)
      begin
      if rising_edge(clk1) then
      case f_1 is 
      when "000000000"=>d<="10000000";when "000000001"=>d<="10000010";
      when "000000010"=>d<="10000100";when "000000011"=>d<="10000111";
      when "000000100"=>d<="10001001";when "000000101"=>d<="10001011";
      when "000000110"=>d<="10001101";when "000000111"=>d<="10010000";
      when "000001000"=>d<="10010010";when "000001001"=>d<="10010100";--0--9
       
      when "000001010"=>d<="10010110";when "000001011"=>d<="10011000";--10--19
      when "000001100"=>d<="10011011";when "000001101"=>d<="10011101";
      when "000001110"=>d<="10011111";when "000001111"=>d<="10100001";
      when "000010000"=>d<="10100011";when "000010001"=>d<="10100101";
      when "000010010"=>d<="10101000";when "000010011"=>d<="10101010";
       
      when "000010100"=>d<="10101100";when "000010101"=>d<="10101110";--20--29
      when "000010110"=>d<="10110000";when "000010111"=>d<="10110010";
      when "000011000"=>d<="10110100";when "000011001"=>d<="10110110";
      when "000011010"=>d<="10111000";when "000011011"=>d<="10111010";
      when "000011100"=>d<="10111100";when "000011101"=>d<="10111110";
       
      when "000011110"=>d<="11000000";when "000011111"=>d<="11000010";--30--39
      when "000100000"=>d<="11000100";when "000100001"=>d<="11000110";
      when "000100010"=>d<="11001000";when "000100011"=>d<="11001001";
      when "000100100"=>d<="11001011";when "000100101"=>d<="11001101";
      when "000100110"=>d<="11001111";when "000100111"=>d<="11010001";
       
      when "000101000"=>d<="11010010";when "000101001"=>d<="11010100";--40--49
      when "000101010"=>d<="11010110";when "000101011"=>d<="11010111";
      when "000101100"=>d<="11101000";when "000101101"=>d<="11101001";
      when "000101110"=>d<="11011100";when "000101111"=>d<="11011110";
      when "000110000"=>d<="11011111";when "000110001"=>d<="11100001";
       
      when "000110010"=>d<="11100010";when "000110011"=>d<="11100011";--50--59
      when "000110100"=>d<="11100101";when "000110101"=>d<="11100110";
      when "000110110"=>d<="11101000";when "000110111"=>d<="11101001";
      when "000111000"=>d<="11101010";when "000111001"=>d<="11101011";
      when "000111010"=>d<="11101101";when "000111011"=>d<="11101110";
       
      when "000111100"=>d<="11101111";when "000111101"=>d<="11110000";--60--69
      when "000111110"=>d<="11110001";when "000111111"=>d<="11110010";
      when "001000000"=>d<="11110011";when "001000001"=>d<="11110100";
      when "001000010"=>d<="11110100";when "001000011"=>d<="11110110";
      when "001000100"=>d<="11110111";when "001000101"=>d<="11110111";
       
      when "001000110"=>d<="11111000";when "001000111"=>d<="11111001";--70--79
      when "001001000"=>d<="11111010";when "001001001"=>d<="11111010";
      when "001001010"=>d<="11111011";when "001001011"=>d<="11111100";
      when "001001100"=>d<="11111100";when "001001101"=>d<="11111101";
      when "001001110"=>d<="11111101";when "001001111"=>d<="11111110";
       
      when "001010000"=>d<="11111110";when "001010001"=>d<="11111110";--80--89
      when "001010010"=>d<="11111111";when "001010011"=>d<="11111111";
      when "001010100"=>d<="11111111";when "001010101"=>d<="11111111";
      when "001010110"=>d<="11111111";when "001010111"=>d<="11111111";
      when "001011000"=>d<="11111111";when "001011001"=>d<="11111111";
       
      when "001011010"=>d<="11111111";when "001011011"=>d<="11111111";--90--99
      when "001011100"=>d<="11111111";when "001011101"=>d<="11111111";
      when "001011110"=>d<="11111111";when "001011111"=>d<="11111111";
      when "001100000"=>d<="11111111";when "001100001"=>d<="11111111";
      when "001100010"=>d<="11111111";when "001100011"=>d<="11111110";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -