VHDL 程序解释,识别器,分频器等,帮我程序后注释下,高手帮帮忙~急~!

发布网友 发布时间:2022-03-29 04:41

我来回答

2个回答

热心网友 时间:2022-03-29 06:11

回答如下,不知道能不能帮助你!
移存器的VHDL程序如下:
Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all; --以上是定义集合包,是VHDL里面的包
entity yicunqi is --这是定义实体,就是定义器件的输入输出管角,名称为yicunqi
port(di ,clk :in std_logic; --2个输入
q6,q5,q4,q3,q2,q1,q0:out_std_logic --7个逻辑输出
);
end yicunqi;
architecture a of yicunqi is --定义结构体,名称为a,属于yicunqi
signal tmp : std_logic_vector(6 downto 0); 定义一个信号变量组,一共7个
begin
process(clk) --clk是触发程序的条件
begin
if (clk'event and clk='1') then --如果CLK有变化且是上升沿触发
tmp(6)<=di; --首先赋值
for i in 1 to 6 loop
tmp(6-i)<=tmp(7-i); --循环赋值,将后一个值给前一个,这样就实现移位
end loop;
end if;
end process;
q6<=not tmp(6);--将值取反付给Q6
q5<=tmp(5);
q4<=not tmp(4);
q3<=not tmp(3);
q2<=tmp(2);
q1<=tmp(1);
q0<=tmp(0);
end a;
译码器:当七位移位寄存器输出的是“1111111”时,译码器输出就是“111”;有一位错码输出即七位输出中有一个是“0”的时候,译码器输出就是“110”,其它情况输出就为“000”。
译码器的VHDL源程序为:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity yimaqi is
port(a,b,c,d,e,f,g:in std_logic;
selt :out std_logic_vector(2 downto 0)); --输出是一个3位的
end yimaqi;
architecture bh of yimaqi is
signal sel: std_logic_vector(6 downto 0);
begin
sel<=a&b&c&d&e&f&g; --将abcdefg按位组成一个7位数组形式
process(sel)
begin
case sel is --case语句应该懂吧,C语言有的饿
when"0111111"=>selt<="110"; --当sel满足when后面的条件时就把100赋值给selt,后面同
when"1011111"=>selt<="110";
when"1101111"=>selt<="110";
when"1110111"=>selt<="110";
when"1111011"=>selt<="110";
when"1111101"=>selt<="110";
when"1111110"=>selt<="110";
when"1111111"=>selt<="111";
when others=>selt<="000";
end case;
end process;
end bh;
判决器的功能相当于一个比较器。
当巴克码识别器的输出大于等于自动门限的输出时,就输出一个“1”脉冲,否则就输出“0”脉冲。
判决器的VHDL源程序为:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity panjueqi is
port(a : in std_logic_vector(2 downto 0);
b :in std_logic_vector(2 downto 0);
c :buffer std_logic --定义的是数据buffer
);
end panjueqi;
architecture bh of panjue is
begin
c<='1' when a>=b else '0'; --当a>=b时c<='1',其他c<='0'
end bh ;

热心网友 时间:2022-03-29 07:29

Library ieee; --打开ieee库
use ieee.std_logic_1164.all; --打开1164包
use ieee.std_logic_unsigned.all; --打开unsigned包
entity yicunqi is --定义一个名为yicunqi的实体(建议不要用拼音命名)
port(di ,clk :in std_logic; --定义两个输入端口
q6,q5,q4,q3,q2,q1,q0:out std_logic --定义七个输入端口
);
end yicunqi; --结束实体声明
architecture a of yicunqi is --定义实体yicunqi的结构体a
signal tmp : std_logic_vector(6 downto 0); --定义了一个7位的信号组
begin
process(clk) --定义进程,敏感信号为CLK
begin
if (clk'event and clk='1') then --在CLK的上升沿满足IF语句的条件
tmp(6)<=di; --将di输入端的数据赋给tmp(6)
for i in 1 to 6 loop --将tmp(6)到tmp(1)依次赋给tmp(5)到tmp(0)
tmp(6-i)<=tmp(7-i);
end loop;
end if;
end process;
q6<=not tmp(6); --将tmp(6)取反输出到Q6
q5<=tmp(5);
q4<=not tmp(4);
q3<=not tmp(3);
q2<=tmp(2);
q1<=tmp(1);
q0<=tmp(0);
end a;
译码器:当七位移位寄存器输出的是“1111111”时,译码器输出就是“111”;有一位错码输出即七位输出中有一个是“0”的时候,译码器输出就是“110”,其它情况输出就为“000”。
译码器的VHDL源程序为:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity yimaqi is
port(a,b,c,d,e,f,g:in std_logic;
selt :out std_logic_vector(2 downto 0)); --定义三位的输出端口
end yimaqi;
architecture bh of yimaqi is
signal sel: std_logic_vector(6 downto 0); --定义一个7位信号组
begin
sel<=a&b&c&d&e&f&g; -- 将abcdefg连结成7位数组赋给sel
process(sel)
begin
case sel is when"0111111"=>selt<="110"; --当sel=0111111时就把110赋值给selt
when"1011111"=>selt<="110";
when"1101111"=>selt<="110";
when"1110111"=>selt<="110";
when"1111011"=>selt<="110";
when"1111101"=>selt<="110";
when"1111110"=>selt<="110";
when"1111111"=>selt<="111";
when others=>selt<="000";
end case;
end process;
end bh;
判决器的功能相当于一个比较器。
当巴克码识别器的输出大于等于自动门限的输出时,就输出一个“1”脉冲,否则就输出“0”脉冲。
判决器的VHDL源程序为:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity panjueqi is
port(a : in std_logic_vector(2 downto 0);
b :in std_logic_vector(2 downto 0);
c :buffer std_logic --定义buffer类型的端口,不仅能输出,自己内部也能读该端口的数据
);
end panjueqi;
architecture bh of panjue is
begin
c<='1' when a>=b else '0'; 当a大于等于b时把1赋给c,否则把0赋给c
end bh ;
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com