📄 低频数字式相位测量仪(程序清单).txt
字号:
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 + -