军用FPGA软件 Verilog语言的编码准测之时钟

2024-06-14 08:04

本文主要是介绍军用FPGA软件 Verilog语言的编码准测之时钟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

军用FPGA软件 Verilog语言的编码准测之时钟

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

      • 军用FPGA软件 Verilog语言的编码准测之时钟
        • 一、引言
        • 二、基本编程规范之时钟
          • 强制准则1----禁止将寄存器的输出直接连接到其他寄存器的时钟管脚。
          • 强制准则2----禁止将时钟信号连接在除寄存器时钟管脚之外的其他信号管脚。
          • 强制准则3----禁止将组合逻辑的输出作为时钟信号
          • 建议准则4----避免同时使用时钟的上升沿和下降沿
          • 建议准则5----建议建议为时钟产生电路创建独立的模块
          • 强制准则5----避免使用门控时钟
          • 强制准则6----建议仅使用一个时钟域

  • 关键词: 安全子集,Verilog HDL,编码准则 ,时钟,复位
一、引言

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

二、基本编程规范之时钟
强制准则1----禁止将寄存器的输出直接连接到其他寄存器的时钟管脚。

禁止将寄存器的输出直接连接到其他寄存器的时钟管脚。注:如有此类情况,可采用时钟网络驱动等措施。

违背示例:

module test( clk_40m, in1 ,in2, out1)
input clk_40m;
input in1 ; 
input in2 ; 
output reg out1 ; reg temp1;always@(posedge clk_40m)  
temp1 <= in1 ; always@( posedge temp1)    //违背1
out1 <= in2 ; 
...
endmodule

遵循示例:

module test( clk_40m, in1 ,in2, out1)
input clk_40m;
input in1 ; 
input in2 ; 
output reg out1 ; reg temp1;
wire clk_temp ; 
always@(posedge clk_40m)  
temp1 <= in1 ; BUFG inclk_inst(.I(temp1),O(clk_temp))always@( posedge clk_temp)    //遵循1
out1 <= in2 ; 
...
endmodule

遵循示例:

强制准则2----禁止将时钟信号连接在除寄存器时钟管脚之外的其他信号管脚。

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

违背示例:

module test( clk_30m,rst_n,clk_40m, in1 ,out1, out2)
input clk_30m;
input clk_40m;
input in1 ; 
input rst_n ; 
output reg out1 ; 
output reg out2 ; 
reg temp1;always@(posedge clk_30m)  if(!rst_n)out1<= 0; else out1 <= in1 ; always@(posedge clk_40m)  if(!rst_n)out2<= 0; else out2 <= clk_30m; //违背1
...
endmodule
强制准则3----禁止将组合逻辑的输出作为时钟信号

违背示例:

module test(   ctrl,clk_40m, d1 ,d2,out1, out2)
input ctrl;
input clk_40m;
input d1; 
input d2; 
output   out1 ; 
output   out2 ; 
wire and_clk_40m;assign and_clk_40m = ctrl & d1;always@(posedge and_clk_40m)  //违背1...
endmodule

遵循示例:

module test(   ctrl,clk_40m, d1 ,d2,out1, out2)
input ctrl;
input clk_40m;
input d1; 
input d2; 
output   out1 ; 
output   out2 ; 
wire and_clk_40m;always@(posedge  clk_40m)  //违背1...
endmodule
建议准则4----避免同时使用时钟的上升沿和下降沿

违背示例:

module rst(clk_40m,rst_n , in,out); 
input clk_40m;
input rst_n;
input in; 
output reg  out ; reg temp ;always @(posedge  clk_40m)     //违背if(!rst_n)temp <= 1'b0 ; elsetemp <= in ; 	always @( negedge clk_40m)   //违背if(!rst_n)out<= 1'b0 ; elseout<= temp ; 	...endmodule
建议准则5----建议建议为时钟产生电路创建独立的模块
强制准则5----避免使用门控时钟

注:如果需要使用门控时钟,可采用在顶层创建独立的门控时钟生成电路等措施。
违背示例:

module buffer(   en,clk_40m, din, dout);
input en;
input clk_40m;
input din; output reg  dout; 
wire oe;assign oe = clk_40m & en ;always@(posedge  oe )  //违背1dout <= din ; 
...
endmodule
强制准则6----建议仅使用一个时钟域

这篇关于军用FPGA软件 Verilog语言的编码准测之时钟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1059835

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而