军用FPGA软件 Verilog语言的编码准测之触发器、锁存器

军用FPGA软件 Verilog语言的编码准测之触发器、锁存器

语言 :Verilg HDL
EDA工具:ISE、Vivado、Quartus II

      • 军用FPGA软件 Verilog语言的编码准测之触发器、锁存器
        • 一、引言
        • 二、基本编程规范之触发器
          • 强制准则1---禁止在同一个 always 语句中混合使用有复位和无复位的触发器。
          • 强制准则2---在复位或者初始化时,必须对触发器赋初值
          • 强制准则3----复位信号的触发条件与进入条件必须一致
        • 三、基本编程规范之锁存器
          • 强制准则1----禁止出现含有锁存器的组合逻辑环路
          • 强制准则2----禁止使用基本逻辑门来描述锁存器
          • 建议准则3----建议将锁存器与其他组合逻辑电路分开描述
        • 四、总结

  • 关键词: 安全子集,Verilog HDL,编码准则 ,触发器、锁存器
一、引言

本文学习军用可编程逻辑器件软件 Verilog 语言编程安全子集,标准准则分为强制准则和建议准则,强制准则在Verilog编程中应该遵循,建议准则在Verilog编程中可参考执行。本次分享 触发器、锁存器 的国军标verilog语言标准准则。

二、基本编程规范之触发器
强制准则1—禁止在同一个 always 语句中混合使用有复位和无复位的触发器。

违背示例:

module top( clk_40m, rst_n, in1 ,in2, out1,out2)
input clk_40m;
input rst_n;
input in1 ; 
input in2 ; 
output reg out1 ; 
output reg out2 ; 
reg temp1;always@(posedge clk_40m or negedge rst_n)  beginif( !rst_n)out1 <= 1'b0 ; else beginout1 <= in1; out2 <= in2;   //违背endend
temp1 <= in1 ; 。。。
endmodule

遵循示例:

module top( clk_40m, rst_n, in1 ,in2, out1,out2)
input clk_40m;
input rst_n;
input in1 ; 
input in2 ; 
output reg out1 ; 
output reg out2 ; 
reg temp1;always@(posedge clk_40m or negedge rst_n)  beginif( !rst_n) beginout1 <= 1'b0 ;       //遵循out2 <= 1'b0 ;      endelse beginout1 <= in1; out2 <= in2;   endend
temp1 <= in1 ; 。。。
endmodule

遵循示例:

强制准则2—在复位或者初始化时,必须对触发器赋初值

注:如不能连接到数据端口或者复位端口等。

违背示例:

module top(  clk_40m,  out1 )
input clk_40m;
output out2 ; 
reg[3:0] counter;always@(posedge clk_40m)  counter <=counter +1'b1 ; //违背...
endmodule

遵循示例:

module top(  clk_40m, rst_n, x)
input clk_40m;
input rst_n ; 
output[3:0] out2 ; 
reg[3:0] counter;always@(posedge clk_40m)  
beginif( !rst_n)counter  <= 4'b0; elsecounter <=counter +1'b1 ; //违背endassign out2  =counter  ; 
...
endmodule
强制准则3----复位信号的触发条件与进入条件必须一致

违背示例:

always@(posedge clk_40m or negedge rst_n)  
beginif(  rst_n)      //违背qout <= 1'b0; elseqout <=data; end

遵循示例:

always@(posedge clk_40m or negedge rst_n)  
beginif(  !rst_n)      //违背qout <= 1'b0; elseqout <=data; end
三、基本编程规范之锁存器
强制准则1----禁止出现含有锁存器的组合逻辑环路

违背示例:

module top(in1,in2,en,ou1); 
input in1;
input in2;
input en; 
output reg  out1 ; wire temp ;
assign temp  = !(in1 & in2 & out1);
always @(en or temp)     //违背if(en)out1 = temp ; elseout1 = out1  ;endmodule
强制准则2----禁止使用基本逻辑门来描述锁存器

注:基本逻辑门包括与门、非门和或门等

建议准则3----建议将锁存器与其他组合逻辑电路分开描述

违背示例:

module top(data,start, en,dout1, dout2);
input data;
input start;
input en; 
output reg  dout1;  
output reg  dout2; always@(data,start, en )   beginif(  en ) dout1 = data ; else dout1 = dout1 ;  dout2 = data| start ; //违背
endendmodule

遵循示例:

module top(data,start, en,dout1, dout2);
input data;
input start;
input en; 
output reg  dout1;  
output reg  dout2; always@(data,  en )   beginif(  en ) dout1 = data ; else dout1 = dout1 ;  endalways@(data,  start )   begin  //遵循dout2 = data| start ; 
endendmodule
四、总结

文章详细介绍了军用FPGA软件编程中使用Verilog语言时应遵守的一系列编码规范,特别是针对触发器和锁存器的设计准则。文章中提出的强制准则包括:
触发器准则
强制准则1:禁止在同一个always语句中混合使用有复位和无复位的触发器。
强制准则2:在复位或初始化时,必须对触发器赋初值。
强制准则3:复位信号的触发条件与进入条件必须一致。
锁存器准则
强制准则1:禁止出现含有锁存器的组合逻辑环路。
强制准则2:禁止使用基本逻辑门来描述锁存器。

文章通过具体的代码示例展示了遵循和违反这些准则的不同情况,强调了遵守这些规范对于确保军用FPGA软件的稳定性和可靠性至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/855525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPU的体系结构分类

CPU的体系架构主要可以分为两大类&#xff1a;复杂指令集计算机&#xff08;CISC&#xff09;架构和精简指令集计算机&#xff08;RISC&#xff09;架构。这两大类架构下又衍生出了多种具体的架构类型。 一、复杂指令集计算机&#xff08;CISC&#xff09;架构 x86架构&#…

随便聊聊网络游戏开发模式

本文仅是闲聊罢了,并非开发教程,有意依此学习的同学注意一下. 就网络游戏开发而言,目前主流的同步方式大概是以下两种: 帧同步 顾名思义,就是按"帧"(一般指逻辑帧)来进行网络同步,一般实现上,都是客户端按"帧"来发送自己的操作数据(无操作也是一种操作(也…

jquey+mybatis-plus实现简单分页功能

这篇文章介绍一下怎么通过JQuery结合mybatis-plus的分页插件实现原生HTML页面的分页效果&#xff0c;没有使用任何前端框架&#xff0c;主要是对前端知识的应用。 创建Springboot项目 Intellij IDEA中创建一个Springboot项目&#xff0c;项目名为pager。 添加必须的依赖包 修…

【Linux】—MySQL安装

文章目录 前言一、下载官方MySQL包二、下载完成后&#xff0c;通过xftp6上传到Linux服务器上三、解压MySQL安装包四、在安装目录下执行rpm安装&#xff0c;请按顺序依次执行。五、配置MySQL六、启动MySQL数据库七、退出&#xff0c;重新登录数据库 前言 本文主要介绍在Linux环境…

创建Docker容器与外部机通信(独立IP的方式)

需求&#xff1a;希望外部可以直接通过不同IP地址访问宿主机上的Docker容器&#xff0c;而不需要端口映射&#xff08;同一个IP不同的端口与外部通讯&#xff09;&#xff0c;这通常涉及到在宿主机的网络层面进行更高级的配置&#xff0c;比如使用IP伪装&#xff08;IP masquer…

详解 ClickHouse 的安装部署

一、安装前准备 关闭防火墙 firewall-cmd --state #查看状态sudo systemctl stop firewalld #关闭防火墙修改 Linux 系统打开文件数限制和用户进程数限制 #查看打开文件数限制和用户进程数限制 ulimit -a#在Hadoop102上修改打开文件数限制和用户进程数限制 sudo vim /etc/secur…

团队协同渗透测试报告输入输出平台部署

目录 简介 文章来源 部署环境 文件下载 开始安装 系统初始化 免责声明 结语 简介 因应监管部需求&#xff0c;国内访问Docker源pull镜像开始变得复杂且困难起来了&#xff0c;大佬github给的在线/离线安装脚本跑了很久也无法拉取到镜像&#xff0c;所以将以前的镜像打…

类的继承性(Java)

本篇学习面向对象语言的第二特性——继承性。 1 .为什么需要继承 我们来举个例子&#xff1a;我们知道动物有很多种&#xff0c;是一个比较大的概念。在动物的种类中&#xff0c;我们熟悉的有猫(Cat)、狗(Dog)等动物&#xff0c;它们都有动物的一般特征&#xff08;比如能够吃…

【YOLOv9改进[注意力]】在YOLOv9中使用注意力CascadedGroupAttention(2023)的实践 + 含全部代码和详细修改方式

本文将进行在YOLOv9中使用注意力CascadedGroupAttention的实践,助力YOLOv9目标检测效果的实践,文中含全部代码、详细修改方式。助您轻松理解改进的方法。 改进前和改进后的参数对比: 目录 一 CascadedGroupAttention 二 在YOLOv9中使用注意力CascadedGroupAttention的实…

Rcmp: Reconstructing RDMA-Based Memory Disaggregation via CXL——论文阅读

TACO 2024 Paper CXL论文阅读笔记整理 背景 RDMA&#xff1a;RDMA是一系列协议&#xff0c;允许一台机器通过网络直接访问远程机器中的数据。RDMA协议通常固定在RDMA NIC&#xff08;RNIC&#xff09;上&#xff0c;具有高带宽&#xff08;>10 GB/s&#xff09;和微秒级延…

三生随记——绿萝诡事

关于绿萝的恐怖故事 第一章&#xff1a;绿意深重 在繁忙的都市中&#xff0c;有一座陈旧的小区&#xff0c;小区的一角&#xff0c;住着一个名叫李明的男子。李明是个沉默寡言的人&#xff0c;他的生活简单而规律&#xff0c;唯一的爱好便是种植绿萝。他的阳台上摆满了各式各样…

云计算 | (八)基本云架构

文章目录 📚负载分布架构🐇负载分布架构🐇单机系统🐇应用、数据库分离🐇应用服务集群🐇微服务🐇负载均衡分类🐇Nginx🐇负载均衡算法⭐️轮询法⭐️随机法⭐️源地址哈希法⭐️加权轮询法⭐️加权随机法⭐️键值范围法📚资源池架构📚动态可扩展架构📚弹…

Vatee万腾平台:智能科技的领航者

随着科技的飞速发展&#xff0c;数字化转型已成为企业、行业乃至整个社会不可逆转的趋势。在这个变革的浪潮中&#xff0c;Vatee万腾平台凭借其卓越的技术实力、前瞻的战略眼光和卓越的服务品质&#xff0c;成为了智能科技的领航者。 Vatee万腾平台致力于为企业提供全方位的数字…

java:spring actuator扩展原有info endpoint的功能

# 项目代码资源&#xff1a; 可能还在审核中&#xff0c;请等待。。。 https://download.csdn.net/download/chenhz2284/89437506 # 项目代码 【pom.xml】 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId&…

客户端输入网址后发生的全过程解析(协议交互、缓存、渲染)

目录 1. 输入 URL 并按下回车键2. DNS 解析3. TCP 连接4. 发送 HTTP 请求5. 服务器处理请求6. 发送 HTTP 响应7. 浏览器接收响应8. 渲染网页9. 执行脚本10. 处理其他资源11. TLS/SSL 加密&#xff08;如果使用 HTTPS&#xff09;握手过程 12. 协议协商和优化 总结 1. 输入 URL …

Ubuntu下FastDDS的源码编译和简单测试

FastDDS是eprosima公司开发的DDS&#xff08;Data Distribution Service&#xff09;库&#xff0c;使用的语言是C&#xff0c;自称是"The Most Complete Open Source DDS Middleware"&#xff0c;其官网是https://eprosima.com/&#xff0c;FastDDS源码在https://gi…

【TB作品】MSP430G2553,单片机,口袋板,流量积算仪设计

题9 流量积算仪设计 某型流量计精度为0.1%, 满刻度值为4L/s&#xff0c;流量计输出为4—20 mA。 设计基于MSP430及VFC32的流量积算仪。 具体要求 (1) 积算仪满刻度10000 L&#xff0c;精度0.1 L; 计满10000 L&#xff0c;自动归零并通过串口&#xff08;RS232&#xff09;向上位…

【Cloudscapes V2】Blender商城10周年免费领取礼物超逼真的Vdb云和爆炸合集烟雾体积云字体符号轨迹火焰粒子

6月19号的限时免费领取插件挺牛的&#xff0c;可以在blender里渲染体积云、爆炸特效、火焰、烟雾等效果&#xff0c;非常逼真。 Blender商城10周年免费领取礼物&#xff1a;https://blendermarket.com/birthday Cloudscapes V2 - 超逼真的 Vdb 云和爆炸合集 CloudScapes 是 …

优思学院|怎么选择精益生产培训才不会被坑?

在选择精益生产培训公司时&#xff0c;我们需要从多个角度去思考。企业若只是盲目地跟风&#xff0c;这样的做法无异于缘木求鱼。精益生产的核心在于发现和消除那些不增值的活动&#xff0c;从而提升产品的质量和生产效率&#xff0c;但要知道的是&#xff0c;发现和改进的人就…

前端面试题日常练-day74 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 在Sass中&#xff0c;以下哪个功能用于继承一个选择器中的样式到另一个选择器中&#xff1f; a) extend b) mixin c) import d) include Sass中的嵌套规则&#xff08;Nested Rules&#xff09;有助于…