mcuiface.vhd.bak
来自「汽车四轮定位CCD驱动CPLD源代码」· BAK 代码 · 共 84 行
BAK
84 行
library ieee;
use ieee.std_logic_1164.all; --引用库
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;
entity Driver is
port(Gout:out std_logic; --输出1
Latch:out std_logic; --输出Latch
data1:out std_logic; --输出数据1 jumpup place
data2:out std_logic; --输出数据2 jumpdown place
dataclk: in std_logic; --与MCU接口的data clock
set:in std_logic; --数据请求
ccdin:in std_logic; --CCD比较信号
clk:in std_logic); --CCD输入信号
signal tempGout:std_logic; --temp输出,保存上周期输出信号
signal tempLatch:std_logic;
end;
architecture behavioral of Driver is
signal countc:integer range 0 to 4095;
signal jumpup:integer range 0 to 4095;
signal jumpdown:integer range 0 to 4095;
signal jumpup1:std_logic_vector(11 downto 0);
signal jumpdown1:std_logic_vector(11 downto 0);
signal I:integer range 0 to 14;
begin
process(clk,set,ccdin,dataclk)
begin
if rising_edge(set) then
I<=0;
elsif set='1' then --复位
countc<=0;
jumpup1<=conv_std_logic_vector(jumpup,12);
jumpdown1<=conv_std_logic_vector(jumpdown,12);
if dataclk'event and dataclk='0' then --下降延锁存数据
I<=I+1;
data1<=jumpup1(I);
data2<=jumpdown1(I);
end if;
elsif clk'event and clk='0' then --下降沿触发
countc<=countc+1; --计数
if countc=2209 then
tempLatch<='1';
elsif countc=2211 then --<<----
tempGout<='1'; --Gout给出高电平
elsif countc=2213 then --<<----
tempGout<='0'; --Gout给出低电平
elsif countc=2215 then
tempLatch<='0';
countc<=0;
jumpup<=0;
jumpdown<=0;
end if;
end if;
if ccdin'event and ccdin='1' then
jumpup<=countc;
end if;
if ccdin'event and ccdin='0' then
jumpdown<=countc;
end if;
Gout<=tempGout;
Latch<=tempLatch;
end process;
end behavioral;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?