📄 convertor.vhd
字号:
--测温仪表的数值转换部分
--软件仿真:通过
--作者:Michael
--时间:2006.10.20
--版本:定稿版
Library ieee;
use ieee.std_logic_1164.all;
Entity convertor is
Port(indata:in std_logic_vector(10 downto 0); --输入的11位二进制的温度数据
clear:in std_logic; --清除暂存寄存器控制
enable:in std_logic; --转换使能控制
b6,b5,b4:out integer range 0 to 9; --输出转换结果的十进制表示
b3,b2,b1:out integer range 0 to 9);--输出转换结果的十进制表示
end convertor;
Architecture rtl of convertor is
Begin
Process(indata,enable,clear)
variable temp1,temp2,temp3:integer range 0 to 20 :=0; --暂存寄存器
variable temp4,temp5,temp6:integer range 0 to 20 :=0; --暂存寄存器
Begin
if(clear='1') then
temp1:=0;temp2:=0;temp3:=0;
temp4:=0;temp5:=0;temp6:=0;
else
if(enable'event and enable='1') then
if(indata(0)='1') then
temp1:=temp1+5;
temp2:=temp2+2;
temp3:=temp3+6;
end if;
if(indata(1)='1') then
temp2:=temp2+5;
temp3:=temp3+2;
temp4:=temp4+1;
end if;
if(indata(2)='1') then
temp3:=temp3+5;
temp4:=temp4+2;
if(temp3>=10) then
temp3:=temp3-10;
temp4:=temp4+1;
end if;
end if;
if(indata(3)='1') then
temp4:=temp4+5;
end if;
if(indata(4)='1') then
temp5:=temp5+1;
end if;
if(indata(5)='1') then
temp5:=temp5+2;
end if;
if(indata(6)='1') then
temp5:=temp5+4;
end if;
if(indata(7)='1') then
temp5:=temp5+8;
if(temp5>=10) then
temp5:=temp5-10;
temp6:=temp6+1;
end if;
end if;
if(indata(8)='1') then
temp5:=temp5+6;
temp6:=temp6+1;
if(temp5>=10) then
temp5:=temp5-10;
temp6:=temp6+1;
end if;
end if;
if(indata(9)='1') then
temp5:=temp5+2;
temp6:=temp6+3;
if(temp5>=10) then
temp5:=temp5-10;
temp6:=temp6+1;
end if;
end if;
if(indata(10)='1') then
temp5:=temp5+4;
temp6:=temp6+6;
if(temp5>=10) then
temp5:=temp5-10;
temp6:=temp6+1;
end if;
if(temp6>=10) then
temp6:=temp6-10;
end if;
end if;
b1<=temp1;b2<=temp2;b3<=temp3;
b4<=temp4;b5<=temp5;b6<=temp6;
end if;
end if;
end process;
end rtl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -