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

📄 convertor.vhd

📁 用VHDL语言实现的控制DS18B20构成测温仪表的程序
💻 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 + -