qq_37154864 2016-12-25 07:17 采纳率: 0%
浏览 1355

数字逻辑程序设计,汽车尾灯

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;
entity weideng is
port(clk,clk1,tright,tleft,jingji:in std_logic;
rightdeng:out std_logic_vector(2 downto 0);
leftdeng:out std_logic_vector(2 downto 0);
lie:out std_logic_vector(2 downto 0);
q:out std_logic_vector(7 downto 0));
end entity weideng;
architecture qiche of weideng is
signal leftd:std_logic_vector(1 downto 0);
signal rightd:std_logic_vector(1 downto 0);
signal jingjid:std_logic_vector(1 downto 0);
signal seel:std_logic_vector(2 downto 0);
begin
control:process(clk,clk1,jingji,tleft,tright)
begin
if(clk'event and clk='1') then
if(rightd="01") then
rightd<="11";
else
rightd<=(rightd-1);
end if;
if(leftd="01") then
leftd<="11";
else
leftd<=(leftd-1);
end if;
if(jingjid="01") then
jingjid<="11";
else
jingjid<=(jingjid-1);
end if;
end if;
if (clk1'event and clk1='1')then
seel <=(seel-1);
end if;
end process control;
proout:process(clk,clk1,tright,tleft,jingji,jingjid,seel,rightd,leftd)
begin
if(clk'event and clk='1')then
if(jingji='0')then
if(tright='1')then
leftdeng<="000";
case rightd is
when"01"=>rightdeng<="001";
when"10"=>rightdeng<="010";
when"11"=>rightdeng<="100";
when others=>rightdeng<="000";
end case;
case seel is
when "000"=>q<="00011000";
when "001"=>q<="00011000";
when "010"=>q<="10011001";
when "011"=>q<="10011001";
when "100"=>q<="01011010";
when "101"=>q<="01011010";
when "110"=>q<="00111100";
when "111"=>q<="00111100";
when others=>q<="00000000";
end case;
elsif(tright='0')then
rightdeng<="000";
end if;
if(tleft='1')then
rightdeng<="000";
case leftd is
when"01"=>leftdeng<="100";
when"10"=> leftdeng<="010";
when"11"=> leftdeng<="001";
when others=> leftdeng<="000";
end case;
case seel is
when "000"=>q<="00111100";
when "001"=>q<="00111100";
when "010"=>q<="01011010";
when "011"=>q<="01011010";
when "100"=>q<="10011001";
when "101"=>q<="10011001";
when "110"=>q<="00011000";
when "111"=>q<="00011000";
when others=>q<="00000000";
end case;
elsif(tleft='0')then
leftdeng<="000";
end if;
end if;
if(tleft='1'and tright='1')then
leftdeng<="111";
rightdeng<="111";
case seel is
when "000"=>q<="00011000";
when "001"=>q<="00011000";
when "010"=>q<="00011000";
when "011"=>q<="00011000";
when "100"=>q<="00011000";
when "101"=>q<="00011000";
when "110"=>q<="00011000";
when "111"=>q<="00011000";
when others=>q<="00000000";
end case;
elsif(tright='0'and tleft='0')then
leftdeng<="000";
rightdeng<="000";
case seel is
when "000"=>q<="11111111";
when "001"=>q<="11111111";
when "010"=>q<="11111111";
when "011"=>q<="11111111";
when "100"=>q<="11111111";
when "101"=>q<="11111111";
when "110"=>q<="11111111";
when "111"=>q<="11111111";
when others=>q<="00000000";
end case;
end if;
if(jingji='1')then
case jingjid is
when"01"=>leftdeng<="000";
rightdeng<="000";
when"10"=> leftdeng<="111";
rightdeng<="111";
when"11"=> leftdeng<="000";
rightdeng<="000";
when others=>leftdeng<="111";
rightdeng<="111";
end case;
end if;
end if;
lie<=seel;
end process proout;
end qiche;,就这个,为啥到最后连接电路的时候,。两个时钟脉冲频率要是差太多的话,点阵中的点就会乱掉,如果把他们接在同样的频率,才会显示正确的箭头方向,,,本来的设计是,向左的时候,左边三个灯依次,右边也是,点阵会显示相应的箭头符号,但是要是两个脉冲一样的话,点阵中的箭头就是一排一排的闪烁不是符号了,纠结,到底哪里出错了图片说明

  • 写回答

1条回答 默认 最新

  • sinat_37154515 2016-12-27 07:35
    关注

    我也不知道啊刘浩,计控院的刘浩

    评论

报告相同问题?

悬赏问题

  • ¥15 制裁名单20240508芯片厂商
  • ¥20 易康econgnition精度验证
  • ¥15 线程问题判断多次进入
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接