当前位置: 首页 > news >正文

【FPGA】Verilog:实现 RS 触发器 | Flip-Flop | 使用 NOR 的 RS 触发器 | 使用 NAND 的 RS 触发器

目录

0x00 RS 触发器(RS Flip-Flop)

0x01 实现 RS 触发器

0x02 使用 NOR 的 RS 触发器

0x03 使用 NAND 的 RS 触发器


0x00 RS 触发器(RS Flip-Flop)

触发器(Flip-Flop)是一种带有时钟的二进制存储设备,用于存储 0 和 1 的值。只有在时钟信号的边沿转换时,存储的 0 或 1 的值才会改变。

从 1 到 0 的转换称为下降沿触发,而从 0 到 1 的转换称为上升沿触发。触发器中存储的值在触发器的输入数据和先前存储的数据值的影响下完成这些转换。

S(设置)输入会导致触发器在下一个有效时钟沿存储一个 1,而 R(复位)输入会导致触发器存储一个 0。如果 S 和 R 的值同时为 0,则触发器保持当前状态;如果两者同时为 1,则被视为非法输入。

行为表

状态图

Timing Diagram

Circuit

0x01 实现 RS 触发器

真值表:

Input

Output

입력 순서

R

S

Q

~Q

1

0

1

1

0

2

0

0

1

0

3

1

0

0

1

4

0

0

0

1

5

1

0

0

1

6

1

1

X

X

0x02 使用 NOR 的 RS 触发器

💬 Design source:

`timescale 1ns / 1psmodule RSFF (input clk,input S,input R,input CLR,output Q,output Qp
);reg Q;// falling edge triggered
always @(posedge !clk) beginif(CLR) Q<=1'b0;else beginif ( (S == 1'b0) && (R == 1'b0) ) Q <= Q;else if ( (S == 1'b0) && (R == 1'b1)) Q <= 1'b0;else if ( (S == 1'b1) && (R == 1'b0)) Q <= 1'b1;else if ( (S == 1'b1) && (R == 1'b1)) Q <= 1'bx;end
endassign Qp = ~Q;endmodule

💬 Testbench:

`timescale 1ns / 1psmodule RSFF_tb;
reg clk, S, R, CLR;
wire Q, Qp;RSFF u_RSFF(.clk(clk ),.S(S ),.R(R ),.CLR(CLR ),.Q(Q ),.Qp(Qp ) 
);initial clk = 1'b0;
initial CLR = 1'b1;
initial S = 1'b0;
initial R = 1'b0;always clk = #50 ~clk;always@(CLR) beginCLR = #125 ~CLR;
endalways@(S) beginS = #175 ~S;S = #50 ~S;
endalways@(R) beginR = #375 ~R;R = #50 ~R;
endalways@(R) beginR = #575 ~R;R = #50 ~R;
endalways@(S) beginS = #675 ~S;S = #50 ~S;
endalways@(R) beginR = #675 ~R;R = #50 ~R;
endinitial begin#800$finish;
endendmodule

Schematic:

🚩 运行结果如下:

0x03 使用 NAND 的 RS 触发器

💬 Design source:

`timescale 1ns / 1psmodule RSFF (input clk,input S,input R,input CLR,output Q,output Qp
);reg Q;// falling edge triggered
always @(posedge !clk) beginif (CLR) Q << 1`b0;else beginQ <= ~(~(S & (~clk)) & Qp);Qp <= ~(~(R & (~cls)) & Q);end
endassign Qp = ~Q;endmodule

Schematic:

🚩 运行结果如下:

📌 [ 笔者 ]   王亦优
📃 [ 更新 ]   2022.11.19
❌ [ 勘误 ]   /* 暂无 */
📜 [ 声明 ]   由于作者水平有限,本文有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!

📜 参考资料 

Introduction to Logic and Computer Design, Alan Marcovitz, McGrawHill, 2008

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

百度百科[EB/OL]. []. https://baike.baidu.com/.

相关文章:

  • wpf devexpress自定义编辑器
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • Android13版本新特性介绍
  • 向量机SVM代码实现
  • 你知道什么是SaaS吗?
  • springBoot集成websocket实时消息推送
  • 【uniapp】 video视频层级、遮挡其他弹窗或顶部导航 使用nvue覆盖
  • 《Fine-Grained Image Analysis with Deep Learning: A Survey》阅读笔记
  • 【最新Tomcat】IntelliJ IDEA通用配置Tomcat教程(超详细)
  • 【计算机网络笔记】网络地址转换(NAT)
  • ClickHouse数据一致性
  • LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  • 代码随想录算法训练营第二十八天| 78 子集 90 子集|| 93 复原IP地址
  • 基于SSM的北海旅游网站设计与实现
  • Windows安装Vmware 虚拟机
  •  D - 粉碎叛乱F - 其他起义
  • interface和setter,getter
  • Javascript编码规范
  • PAT A1092
  • Rancher-k8s加速安装文档
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Vue全家桶实现一个Web App
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 动态魔术使用DBMS_SQL
  • 分类模型——Logistics Regression
  • 聊聊directory traversal attack
  • 通过git安装npm私有模块
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • const的用法,特别是用在函数前面与后面的区别
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #### go map 底层结构 ####
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (06)金属布线——为半导体注入生命的连接
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (五)c52学习之旅-静态数码管
  • (一)u-boot-nand.bin的下载
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • ./和../以及/和~之间的区别
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net core 连接数据库,通过数据库生成Modell
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET中使用Protobuffer 实现序列化和反序列化
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • /proc/vmstat 详解
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [2016.7.Test1] T1 三进制异或
  • [20190401]关于semtimedop函数调用.txt