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

📄 binbcd.vhd

📁 VHDL 在MAXPLUS环境下运行
💻 VHD
字号:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
LIBRARY altera;
USE altera.maxplus2.ALL;

ENTITY binbcd IS  
    PORT ( result 	: IN STD_LOGIC_VECTOR(13 DOWNTO 0);
           clk,reset: IN STD_LOGIC;
--		   qu       : out STD_LOGIC_VECTOR(8 DOWNTO 0);
           bcd 		: OUT STD_LOGIC_VECTOR(15 DOWNTO 0));
END binbcd;

ARCHITECTURE dff8 OF binbcd IS
SIGNAL nu : STD_LOGIC_VECTOR(13 DOWNTO 0);
SIGNAL de : STD_LOGIC_VECTOR(9 DOWNTO 0);
SIGNAL clkD: STD_LOGIC;
SIGNAL  qu : STD_LOGIC_VECTOR(11 DOWNTO 0);
SIGNAL  re : STD_LOGIC_VECTOR(9 DOWNTO 0);
BEGIN
    U1 : divide 
         GENERIC MAP(WIDTH_Q=>12,WIDTH_N=>14,
                     WIDTH_D=>10,WIDTH_R=>10,
                     WIDTH_D_MIN=>3,PIPELINE_DELAY=>0,
						LPM_PIPELINE=>1)
            PORT MAP(numerator=>nu,denominator=>de,--"1111101000",
                      clock=>clkD,
                      quotient=>qu,remainder=>re);
  PROCESS(clk,reset)
  VARIABLE i:INTEGER RANGE 0 TO 6;
  VARIABLE mid:STD_LOGIC_VECTOR(15 DOWNTO 0);
  BEGIN
	if(reset = '0') then
	  i := 0;
	  clkD <= '0';
    elsif(clk'event and clk = '1') then
	  CASE i IS
		WHEN 0 =>
	  			  nu <= result;
	  			  de <= "1111101000";
		WHEN 1 =>
			  	  clkD <= '1';
		WHEN 2 =>
				  mid(15 downto 12) := qu(3 downto 0);
				  nu(9 downto 0) <= re;
				  nu(13 downto 10) <= "00000";  
				  de <= "0001100100";
			  	  clkD <= '0';
		WHEN 3 =>
			  	  clkD <= '1';
		WHEN 4 =>
				  mid(11 downto 8) := qu(3 downto 0);
				  nu(9 downto 0) <= re;
				  nu(13 downto 10) <= "00000";  
				  de <= "0000001010";
			  	  clkD <= '0';
		WHEN 5 =>
			  	  clkD <= '1';
		WHEN OTHERS =>
				  mid(7 downto 4) := qu(3 downto 0);
				  mid(3 downto 0) := re(3 downto 0);
			  	  clkD <= '0';
				  bcd(15 downto 0) <= mid(15 downto 0);
	  END CASE;
	  i := i+1;
	end if;
  END PROCESS;
END;

⌨️ 快捷键说明

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