📄 bfl_encode.vhd
字号:
-- *******************************************************************************************
-- File name : BFL_Encode.vhd
-- Created On : 2008-03-21 16:25
-- Designed by : He Minghui
-- Function : 将宽度为width位的输入数据按BiΦ-L方式(曼彻斯特码)进行编码后输出,输出数据的宽度为(2*width)
-- *******************************************************************************************
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
ENTITY BFL_Encode is
GENERIC(width: INTEGER := 16);
PORT
(
Data : IN STD_LOGIC_VECTOR(width-1 DOWNTO 0);
nReset : IN STD_LOGIC;
WriteData: IN STD_LOGIC;
Lsb_first: IN STD_LOGIC;
BFL_Data : OUT STD_LOGIC_VECTOR(width*2-1 DOWNTO 0)
);
END BFL_Encode;
ARCHITECTURE Behave OF BFL_Encode IS
BEGIN
-- *******************************************************************************************
PROCESS(WriteData,nReset)
VARIABLE Data_Temp: STD_LOGIC_VECTOR(width-1 downto 0);
VARIABLE BFL_Temp : STD_LOGIC_VECTOR(width*2-1 downto 0);
VARIABLE HighLevel: STD_LOGIC;
BEGIN
IF nReset = '0' THEN
BFL_Temp := (OTHERS => '0');
-- BFL_Data <= (OTHERS => '0');
ELSIF rising_edge(WriteData) THEN
Data_Temp := Data;
FOR i IN 0 TO (width-1) LOOP
IF(Lsb_first = '1')THEN -- 先发送低位,后发送高位
IF Data_Temp(i) = '1' THEN
BFL_Temp(2*i+1) := '0';
BFL_Temp(2*i) := '1';
ELSE
BFL_Temp(2*i+1) := '1';
BFL_Temp(2*i) := '0';
END IF;
ELSE -- 先发送高位,后发送低位
IF Data_Temp(i) = '1' THEN
BFL_Temp(2*i+1) := '1';
BFL_Temp(2*i) := '0';
ELSE
BFL_Temp(2*i+1) := '0';
BFL_Temp(2*i) := '1';
END IF;
END IF;
END LOOP;
BFL_Data <= BFL_Temp;
END IF;
END PROCESS;
-- *******************************************************************************************
END Behave;
-- 高位先发:指的是转化后的串行数据由高至低的顺序发送
-- 低位先发:指的是转化后的串行数据由低至高的顺序发送
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -