VHDL入门精进第二天

本文详细介绍了如何使用VHDL语言实现一个基于D触发器的计数器,包括基本的D触发器实现、多级D触发器的结构以及signal和process在时序逻辑中的应用。
摘要由CSDN通过智能技术生成

目标

用VHDL实现多个D触发器构成的计数器

源码

阶段一:实现一个D触发器

library ieee ;
use ieee.std_logic_1164.all ;

entity VHDL is 
	port (
		clk: in std_logic;       --时钟信号
		d: in std_logic;
		q:out std_logic
	);
end VHDL;

architecture dataflow of VHDL is

begin
	
--D触发器赋值过程
	process(clk)
	begin
		if rising_edge(clk) then
			q <= d;
		end if;
	end process;
	
end dataflow;

这里我们引入了process,下文有简单的说明,也可以自己搜索。
这个实例可以实现D触发器的功能,波形模拟略

library ieee ;
use ieee.std_logic_1164.all ;

entity VHDL is 
	port (
		clk: in std_logic;       --时钟信号
--		d: in std_logic;
		q_out_0, q_out_1, q_out_2: out std_logic
	);
end VHDL;

architecture dataflow of VHDL is

	signal q0: std_logic:='0';
	signal q1: std_logic:='0';
	signal q2: std_logic:='0';

begin
	
--D触发器赋值过程
	process(clk)
	begin
		if rising_edge(clk) then
			q0 <= (not q2) or q1;    --自己根据状态转换分析得出的次态方程
			q1 <= (not q2) and q0;
			q2 <= (q1 and q0) or (q2 and q0);
		end if;
	end process;

当然,这是利用现有知识点生硬地实现的计数器,实际使用中,会引入更多的知识点,比如component、std_logic_vector类型等

学到的知识点

signal

信号是描述硬件系统的基本数据对象,它类似于连接线。它除了没有数据流动方向说明外,其它性质与实体的端口port类似。
使用和定义的范围是实体、结构体和程序包。

在程序中:

  • 信号值的代入采用“<=”代入符,代入时可以附加延时。
  • 变量赋值时用“: =”,不可附加延时。

process

Process过程是一个顺序执行的代码块,用于描述组合逻辑或时序逻辑。

一般格式:

process(sensitivity_list)
begin
   --process code
end process
--其中,sensitivity_list是影响process执行的信号列表
--对于时序逻辑,sensitivity_list通常只包含时钟信号。

process+signal的理解

process(A,B,C,D)
BEGIN
	D<=A;
	X<=B+D;
	D<C;
	Y<=B+D;
END PROCESS;  
--由于代入时没有进行时延处理,仿真时认为时间0值延时,执行结果D最终为C,X和Y的内容都是B+C。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值