bfl_encode.vhd
来自「将宽度为width位的并行输入数据按BiΦ-L码(曼彻斯特码)方式进行编码后串行」· VHDL 代码 · 共 66 行
VHD
66 行
-- *******************************************************************************************
-- 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 + =
减小字号Ctrl + -
显示快捷键?