FPGA开发——VHDL实现各类触发器

这篇具有很好参考价值的文章主要介绍了FPGA开发——VHDL实现各类触发器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

小编最近在学习时序电路的VHDL设计,通过此文对触发器和VHDL相关知识进行总结,以便日后进行复习、查阅。本文首先回顾了各类触发器的基本知识包括特性方程、状态图等,最后通过VHDL来实现各类触发器。

一、触发器知识回顾

在实际的数字系统中往往包含大量的存储单元,而且经常要求他们在同一时刻同步动作,为达到这个目的,在每个存储单元电路上引入一个时钟脉冲(CLK)作为控制信号,只有当CLK到来时电路才被“触发”而动作,并根据输入信号改变输出状态。把这种在时钟信号触发时才能动作的存储单元电路称为触发器,常见的触发器有D触发器、RS触发器、JK触发器、T触发器,它们是构成时序逻辑电路的基本单元。

名称 特性方程 逻辑符号 状态图
D触发器 vhdl设计d触发器,fpga开发 vhdl设计d触发器,fpga开发 vhdl设计d触发器,fpga开发
RS触发器(或非门实现)

vhdl设计d触发器,fpga开发

(约束条件)

vhdl设计d触发器,fpga开发 vhdl设计d触发器,fpga开发
JK触发器 vhdl设计d触发器,fpga开发 vhdl设计d触发器,fpga开发 vhdl设计d触发器,fpga开发
T触发器 vhdl设计d触发器,fpga开发 vhdl设计d触发器,fpga开发 vhdl设计d触发器,fpga开发

D触发器真值表:

D vhdl设计d触发器,fpga开发
0 0 0
0 1 0
1 0 1
1 1 1

RS触发器真值表:

S R vhdl设计d触发器,fpga开发
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 不确定
1 1 1 不确定

RS触发器真值表:

J K vhdl设计d触发器,fpga开发
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0

T触发器真值表:

Y vhdl设计d触发器,fpga开发
0 0 0
0 1 1
1 0 1
1 1 0

二、VHDL实现

在VHDL中完整的条件语句只能构成组合逻辑电路,例如下面的二选一数据选择器。

entity select1of2 is 
	port (a, b, s : in bit;
				y : out bit);
end entity select1of2;

architecture bhv of select1of2 is 
	begin
	process(a,b,s)
	begin
		if(s='1') then y<=a; else y<=b;
		end if;
	end process;
end architecture bhv;

可以观察到二选一数据选择器的RTL电路没有触发器或者锁存器,即没有存储功能。

vhdl设计d触发器,fpga开发

在VHDL实现时序电路的核心思想就是通过不完整条件语句。为了实现记忆、存储功能,对于不满足条件的的语句,VHDL综合器解释为不予执行,即信号保持前一次的值,不发生改变。对于数字电路来说,当输入改变后仍能保持原值不变,就意味着使用了具有存储功能的元件,其中输出不仅仅取决于输入,还取决于所处的状态。

D触发器代码实现

library ieee;
use ieee.std_logic_1164.all;
entity dff2 is
	port(CLK, RST, EN, D : in std_logic;
					   Q : out std_logic);
end entity dff2;
architecture bhv of dff2 is
	signal Q1 : std_logic;
	begin
	process(CLK, Q1, RST, EN)
		begin
		if RST = '1' then Q1 <= '0';
		elsif CLK'EVENT and CLK = '1' then 
			if EN = '1' then Q1 <= D;
			end if;
		end if;
	end process;
	Q <= Q1;
end architecture bhv;

      

D触发器仿真波形

vhdl设计d触发器,fpga开发

RS触发器代码实现

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity SR is
	port(S, R, CLK : in std_logic;
				Q  : buffer std_logic);
end entity SR;

architecture bhv of SR is
	signal Q_TEMP : std_logic;
	begin
	process(CLK)
	begin
		if CLK'EVENT and CLK = '1' then 		--或非门构成的SR触发器
			if S = '0' and R = '1' then
			Q_TEMP <= '0';
			elsif S = '1' and R = '0' then 
			Q_TEMP <= '1';
			end if;
		end if;
	Q <= Q_TEMP;
	end process;
end architecture bhv;

RS触发器仿真波形

vhdl设计d触发器,fpga开发

JK触发器代码实现

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity JK is
	port(CLK,J, K : in std_logic;
			Q, NQ : out std_logic);
end entity JK;

architecture bhv of JK is
	signal Q_TEMP : std_logic;
	signal NQ_TEMP: std_logic;
	begin
	process(CLK, J, K)
	begin
		if CLK'EVENT  and CLK = '1' then
			if (J = '0') and  (K = '1') then
			Q_TEMP <= '0';
			NQ_TEMP <= '1';
			elsif (J = '1') and (K ='0') then
			Q_TEMP <= '1';
			NQ_TEMP <= '0';
			elsif (J = '1') and (K = '1') then
			Q_TEMP <=  not Q_TEMP;
			NQ_TEMP <= not NQ_TEMP;
			end if;
		end if;
	Q <= Q_TEMP;
	NQ <= NQ_TEMP;
	end process;
end architecture bhv;
			
	

JK触发器仿真波形

vhdl设计d触发器,fpga开发

T触发器代码实现

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity t_ff is
	port(CLK, T : in std_logic;
			Q: buffer  std_logic);
end entity t_ff;

architecture bhv of t_ff is
	signal Q_TEMP : std_logic;
	begin
	process(CLK)
		begin
		if CLK'EVENT and CLK = '1' then
			if T = '1' then 
			Q_TEMP <= not Q_TEMP;
			else
			Q_TEMP <= Q_TEMP;
			end if;
		end if;
	Q <= Q_TEMP;
	end process;
end architecture bhv;
	

T触发器仿真波形

vhdl设计d触发器,fpga开发

总结

以上就是本文的全部内容,非常感谢你能看到这里(仿真波形有一定的延迟)。文章来源地址https://www.toymoban.com/news/detail-766573.html

到了这里,关于FPGA开发——VHDL实现各类触发器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 「FPGA」基本时序电路元件——锁存器和触发器

    FPGA是一种数字电路实现的方式,它是基于小型查找表(16X1)设计的,它的兄弟CPLD是基于高密度复杂组合逻辑设计的。FPGA的一个优点是触发器资源丰富,适合实现复杂的时序设计。本文将从 门级电路 的角度来介绍时序电路的基本结构,锁存器(Latch)和触发器(flip-flop)。

    2024年02月11日
    浏览(52)
  • FPGA结构:LATCH(锁存器)和 FF(触发器)介绍

    如果你想学习有关FPGA的专业术语,可以参考这一篇:FPGA专业术语介绍 一句话概括,能够存储一个状态的数字电路叫做锁存器。 以下是最为基本的一个RS锁存器的具体结构: 以下是它的真值表,其中X表示不确定/无效: R {R} R (清零) S {S} S (置位) Q ( t ) {Q(t)} Q ( t ) (上一时刻的

    2024年01月25日
    浏览(56)
  • FPGA面试题【D触发器搭建4进制的计数器】

    目录 题目 核心思路 答案 用D触发器搭建4进制的计数器 本题目主要考察了数字电路基础中的计数器设计。 题目看上去很简单,要求实现一个4进制的计数器,但要用D触发器来搭建,这显然不会像写Verilog实现一样容易,所以我们要用数字电路中的传统方法来设计。 4进制计数器

    2024年02月04日
    浏览(50)
  • 北邮22级信通院数电:Verilog-FPGA(11)第十一周实验(1)用JK触发器实现8421码十进制计数器

    北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 1.1  JK_8421.v 1.2  JK_ff.v 1.3  debounce.v 二.管脚分配 三.实

    2024年02月05日
    浏览(53)
  • 【FGPA】Verilog:JK 触发器 | D 触发器 | T 触发器 | D 触发器的实现

    0x00 JK 触发器 JK 触发器是 RS 触发器和 T 触发器的组合,有两个输入端 J 和 K,如果两个输入端都等于 1,则将当前值反转。 行为表

    2024年02月05日
    浏览(49)
  • Verilog设计实现D触发器与JK触发器

    题目:         用Verilog实现以下电路:                 1. 带复位端的正边沿触发的D触发器;                 2.带复位端的正边沿触发的JK触发器。 包括sys_clk,复位信号sys_rst_n,输入信号key_in以及输出信号led_out; 采用行为级描述: testbench仿真代码编写:

    2024年04月28日
    浏览(79)
  • [从零开始学习FPGA编程-32]:进阶篇 - 基本时序电路-D触发器(Verilog语言)

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:  目录 第1章 什么是时序电路 1.1 时序电路 1.2 什么是触发器

    2023年04月08日
    浏览(52)
  • FPGA中锁存器(latch)、触发器(flip-flop)以及寄存器(register)详解

    1 定义 1.1 锁存器(latch)     锁存器是一种由电平触发的存储单元,为异步电路,数据存储的动作取决于输入信号的电平值,只要输入发生变化,输出即随之发生变化。 1.2 触发器(flip-flop)     触发器是边沿敏感的存储单元,数据存储的动作由某一信号的上升或者下降

    2024年02月12日
    浏览(43)
  • (91)Verilog实现D触发器

    1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog实现D触发器 5)结语 FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路

    2024年02月04日
    浏览(37)
  • 使用D触发器实现8分频

    最近闲来无聊玩了一阵子FPGA,其中遇到一个经典的问题,就是用verilog实现8分频器。发现自己并不是很熟练,所以就以blog的形式记录一下,同时也分享给大家。 所需要的前提条件:由verilog语言基础,知道D触发器的逻辑 要知道,几乎所有的编程语言都由模块化的思想包含在

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包