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

📄 ulaw_14_8.vhd

📁 使用VHDL语言
💻 VHD
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity ulaw_14_8 is
		PORT(
			data			:in			std_logic_vector(13 downto 0);	--pcm linear signal
			frame			:in			std_logic;								--frame synchronous signal
			dataq			:out			std_logic_vector(7 downto 0));	--output noliear signal
end ulaw_14_8;

architecture rtl of ulaw_14_8 is
	constant		data_c		:std_logic_vector(12 downto 0) := "0000000100001";
	signal		data_in		:std_logic_vector(13 downto 0);
	signal		data_sum		:std_logic_vector(12 downto 0);
	signal		data_q		:std_logic_vector(6 downto 0);
begin
	data_sum <= data(12 downto 0) + data_c;

	process(frame)
	begin
		if rising_edge(frame) then
			data_in <= data(13) & data_sum;
		end if;
	end process;

	process(data_in)
	begin
			if data_in(12) = '1' then
				data_q <= "111" & data_in(11 downto 8);
			elsif data_in(11) = '1' then
				data_q <= "110" & data_in(10 downto 7);
			elsif data_in(10) = '1' then
				data_q <= "101" & data_in(9 downto 6);
			elsif data_in(9) = '1' then
				data_q <= "100" & data_in(8 downto 5);
			elsif data_in(8) = '1' then
				data_q <= "011" & data_in(7 downto 4);
			elsif data_in(7) = '1' then
				data_q <= "010" & data_in(6 downto 3);
			elsif data_in(6) = '1' then
				data_q <= "001" & data_in(5 downto 2);
--			elsif data_in(5) = '1' then
			else
				data_q <= "000" & data_in(4 downto 1);
			end if;
	end process;
		
	process(frame)
	begin
		if frame'event and frame = '1' then
			dataq(7) <= data_in(13);
			dataq(6 downto 0) <= data_q;
		end if;
	end process;
end rtl;




⌨️ 快捷键说明

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