常用数字器件的描述-时序逻辑器件的描述

目录

锁存器与触发器

寄存器与移位寄存器

分频器及其应用

偶分频器

奇分频器

半整数分频器

分频器的应用


锁存器与触发器

  锁存器与触发器是两种最基本的存储电路。 锁存器是电平敏感器件,而触发器是边沿触发器件。    为了使用灵活方便,商品化的锁存器/触发器都附加有复位端(和置位端),分为异步复位和同步复位两类。

  描述具有异步复位功能的JK触发器的Verilog代码参考如下:

module JKFF_async_rst(clk,rst_n,j,k,q);input clk,rst_n;input j,k;output reg q;always @( posedge clk or negedge rst_n )if ( !rst_n )     // 低电平有效q <= 1'b0;else     

  描述具有异步复位功能的D触发器的Verilog代码参考如下:

module DFF_async_rst(clk,rst_n,d,q);input clk,rst_n,d;output reg q;always @( posedge clk or negedge rst_n )if ( !rst_n )q <= 1'b0;  elseq <= d;
endmodule     

描述具有同步复位功能的D触发器的Verilog代码参考如下:

module DFF_sync_rst(clk,rst_n,d,q);input clk,rst_n,d;output reg q;always @ ( posedge clk )if ( !rst_n )q <= 1'b0;  elseq <= d;
endmodule     

寄存器与移位寄存器

   74HC573是8位三态寄存器,内部由D锁存器构成,在微处理器/控制器系统中用于数据或者地址信号的锁定。

 module HC573(d,le,oe_n,q);input [7:0] d;input le,oe_n;output wire [7:0] q;// 定义内部变量reg [7:0] qtmp;                  // 三态输出assign q = (!oe_n)? qtmp : 8'bz;  // 锁存过程always @( d, le )                  if ( le ) qtmp <= d;
endmodule

   74HC194是四位双向移位寄存器,具有异步复位,同步左移/右移、并行输入和保持功能。

module HC194(clk,rd_n,s,din,dil,dir,q);input clk,rd_n,dil,dir;input [0:3] din;input [1:0] s;output reg [0:3] q;// 功能描述always @(posedge clk or negedge rd_n)           if (!rd_n) q <= 4'b0000;else case (s)2'b01: // 右移q[0:3] <= {dir,q[0:2]};  2'b10: // 左移q[0:3] <= {q[1:3],dil};   2'b11: // 并行输入q <= din;                    default: // 保持q <= q;                                                       endcaseendmodule

   74HC160/162为常用的同步十进制计数器,74HC161/163为常用的同步十六进制计数器。74HC160/161/162/163的管脚排列完全相同,不同的是,74HC160/161具有异步复位功能,74HC162/163具有同步复位功能

 module HC160(clk,rd_n,ld_n,ep,et,d,q,co);input clk,rd_n,ld_n,ep,et;input [3:0] d;output reg [3:0] q;output wire co;// 进位逻辑assign co = (( q == 4'b1001 ) & et );      // 计数过程always @( posedge clk or negedge rd_n )  if ( !rd_n ) q <= 4'b0000;else if ( !ld_n )   q <= d;else if ( ep & et )if ( q == 4'b1001 )  q <= 4'b0000;  else   q <= q + 1'b1; endmodule

   74HC191是单时钟16进制加/减计数器,其中U'/D是计数方式控制端,当U'/D=0时实现加法计数,U'/D=1时实现减法计数。进/借位信号C/B在进行加法计数时,在状态“1111”输出进位信号,在进行减法计数时,在状态“0000”输出借位信号。

 module HC191(clk,s_n,ld_n,und,d,q,ocb);input clk,s_n,ld_n,und;input [3:0] d;output reg [3:0] q;output wire ocb;// 进位和借位逻辑assign ocb = (~und &( q==4'b1111 )) |   ( und &(q == 4'b0000));// 计数过程always @(posedge clk or negedge ld_n)if ( !ld_n )  q <= d;else if ( !s_n )if ( !und )  q <= q + 1'b1;else   q <= q - 1'b1;endmodule

分频器及其应用

CD4060: 14级异步二进制 计数器/分频器, 带RC或者晶振电路。

   分频器是一种时序逻辑电路,用于降低信号的频率。    设分频器时钟信号的频率用fclk表示,分频输出信号的频率用ffpout表示,则N分频器输出信号的频率与时钟信号频率之间的关系为:ffpout=fclk/N。    根据分频系数N的特点,可将分频器分为偶分频器,奇分频器和半小数分频器三种基本类型。    通用分频器的实现方法是:应用 N 进制计数器(状态:0~N-1),将待分频的信号作为计数器的时钟脉冲,分频信号作为输出。设 M 为 1~N-1 之间的任意整数,在计数器从 0 计到 M-1 期间, 分频信号输出为低(或高)电平,再从 M 计到 N-1 期间,分频信号输出为高(或低)电平。 其中 M 的具体数值可根据占空比的要求进行调整。

 module fp_N ( clk,en,N,M,fp_out );input clk,en;       // en为分频器控制(enable)信号,高电平有效input [11:0] N;    // 分频系数N,定义为12位时最大分频系数为4095       input [11:0] M;     // 高低电平分界设置,根据需要可在1~4095之间调整output wire fp_out;      // 分频输出信号// 定义内部计数器reg [11:0] cnt;           // 容量应满足2n≥Nassign fp_out = ( cnt < M ) ? 1'b0 : 1'b1; // 分频输出// 分频过程always @( posedge clk )    if ( !en )  cnt <= 12'b0;            // 控制信号无效时 else  if ( cnt < N-1 )cnt <= cnt + 1'b1; else  cnt <= 12'b0;   endmodule

偶分频器

   偶分频器的分频系数N为偶数。    输出为方波的偶分频器除了通用分频器,取M=N/2的实现方法之外,还有另一种实现方法:应用N/2进制计数器,将待分频的信号作为计数器的时钟脉冲,分频信号作为输出。每当计数器计满N/2个脉冲时,控制分频输出信号翻转,同时将计数器清零,在下次时钟到来时重新开始计数。如此循环反复,可以实现任意偶数分频。

  module fp_even( clk,en,N_even,fp_out );input clk,en;                  // en为分频器控制(enable)信号,高电平有效input [11:0] N_even;        // 偶分频系数N,定义12位时最大分频系数为4094output reg fp_out;           // 分频信号输出// 定义内部n位计数器reg [11:0] cnt;               // 计数容量应满足2n≥(N/2)// 分频过程always @ ( posedge clk )if ( !en )                    // 控制信号无效时 begin  cnt <= 12'b0;  fp_out<= 1'b0;  endelseif ( cnt < ( N_even/2-1 ))cnt <= cnt + 1'b1; elsebegin  cnt <= 12'b0; fp_out<= ~fp_out;  end
endmodule 

奇分频器

   奇分频器的分频系数 N 为奇数。     如果不要求分频输出信号为方波,奇分频可以用通用分频器实现。     如果要求分频输出信号为方波,则具体的实现方法是:应用两个N进制计数器,将待分频的信号作为计数器的时钟脉冲,分别在时钟脉冲的上升沿和下降沿进行N进制计数。当计数器从0计到(N-1)/2时分频输出为低电平,再从(N+1)/2计到N-1时分频输出为高电平,分别得到两个占空比非50%的分频信号,然后将两个分频输出信号相或即可得到方波信号。

  module fp_odd(clk,en,N_odd,fp_out);input clk,en;                     // en为分频器控制信号,高电平有效input [11:0] N_odd;            // 奇分频系数N,定义为12位最大分频系数为4095output wire fp_out;reg [11:0] cnt1,cnt2;         // 内部n位计数器,计数容量应满足2n>N(* synthesis,probe_port,keep *) wire  fp1,fp2;  // 内部线网assign fp1 = (cnt1 <= (N_odd-1)/2)? 0:1;  // 输出逻辑assign fp2 = (cnt2 <= (N_odd-1)/2)? 0:1;assign fp_out = fp1 | fp2;always @( posedge clk )   // 上升沿计数if ( !en )   cnt1 <= 12'b0;else if ( cnt1 < N_odd-1 )   cnt1 <= cnt1 + 1'b1; else   cnt1 <= 12'b0; always @ ( negedge clk )    // 下降沿计数if ( !en )   cnt2 <= 12'b0;else if ( cnt2 < N_odd-1 )  cnt2 <= cnt2 + 1'b1;else   cnt2 <= 12'b0;endmodule

半整数分频器

  半整数分频器是指分频系数为整数一半(如10.5)的分频器。     半整数分频器的实现电路,其中模块N_Counter为上升沿工作的N进制计数器,co为其进位信号。

 module fp10p5(clk,fp_out);input clk;output wire fp_out;// 定义内部变量和信号reg [3:0] cnt;  (* synthesis,probe_port,keep *) wire co;reg q;wire cnt_clk;// 描述异或门和输出assign cnt_clk = clk ^ q;// 描述输出assign fp_out = q;// 进位信号  assign co = ( cnt == 4'd10 );  // 描述11进制计数器 always @( posedge cnt_clk ) if ( cnt == 4'd10 )    cnt <= 4'd0;elsecnt <= cnt + 1'b1;// 描述T'触发器always @( posedge co )q <= ~q ;
endmodule

分频器的应用

   分频器在电子系统中应用广泛。例如,要使用逻辑电路控制直流电机的速度,通常采用脉冲周期固定、占空比可调的PWM信号应用图所示的驱动电路控制直流电机的转速,其中SSR为固态继电器(Solid State Relay),而PWM信号则基于例的通用分频器实现。

   应用PWM控制电机转速的原理是:PWM输出脉冲的平均直流量与占空比成正比。PWM信号的占空比越大,电机得到的平均电流量越大,电机的转速就越高。所以,只需要改变PWM信号的占空比,就可以调节电机的转速。

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

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

相关文章

今天出了10个4声母 .com

价格蛮低的 &#xff0c;VJ.VT.Q.Q 十个 遥想当年6.5万收的5个四声母.com&#xff0c;上面有2个就在下图中呀&#xff0c;赔大发了

【JAVA】使用IDEA创建maven聚合项目

【JAVA】使用IDEA创建maven聚合项目 1.效果图 2.创建父模块项目 2.1删除父模块下面的src目录以及不需要的maven依赖 3创建子模块项目 3.1右击父模块项目选择Module… 3.2创建子模块 3.3删除子模块下不需要的maven依赖 4.子模块创建完成后引入SpringBoot依赖启动项目

OKG Research:用户意图驱动的Web3应用变革

出品&#xff5c; OKG Research 作者&#xff5c;Samuel QIN 当前加密市场的快速演变中&#xff0c;用户增长成为行业可持续发展的基石。目前主流观点在推动行业前进的路上&#xff0c;从单纯的技术探索在向更注重应用价值的方向转变。尽管近年来Web3生态系统发展迅速&#xf…

云渲染与云电脑,应用场景与技术特点全对比

很多朋友问&#xff0c;你们家一会宣传云渲染&#xff0c;一会宣传云电脑的&#xff0c;我到底用哪个&#xff1f;今天&#xff0c;渲染101云渲染和川翔云电脑就来对比下两者的区别&#xff01; 渲染101&川翔云电脑&#xff0c;都是我们的产品&#xff0c;邀请码6666 一、…

鸿蒙进阶篇-属性动画-animateTo转场动画

大家好啊&#xff0c;这里是鸿蒙开天组&#xff0c;今天我们来学习属性动画-animateTo&转场动画&#xff0c;咱们先来学习属性动画-animateTo 属性动画-animateTo 属性动画 animation是作为属性使用&#xff0c;而animateTo显示动画是一个系统的内置函数&#xff0c;可以…

我谈正态分布——正态偏态

目录 pdf和cdf参数 标准正态分布期望和方差分布形态 3 σ 3\sigma 3σ原则 正态和偏态正态偏态瑞利分布偏度 (Skewness)峰度 (Kurtosis) 比较 正态分布的英文是Normal Distribution&#xff0c;normal是“正常”或“标准”的意思&#xff0c;中文翻译是正态&#xff0c;多完美的…

从无音响Windows 端到 有音响macOS 端实时音频传输播放

以下是从 Windows 端到 macOS 端传输音频的优化方案&#xff0c;基于上述链接中的思路进行调整&#xff1a; Windows 端操作 安装必要软件 安装 Python&#xff08;确保版本兼容且已正确配置环境变量&#xff09;。安装 PyAudio 库&#xff0c;可通过 pip install pyaudio 命令…

AI知识库在行业应用中的未来趋势与案例分析

在数字化转型的浪潮中&#xff0c;AI知识库正成为企业提升效率和创新能力的关键工具。本文将探讨AI知识库在不同行业的应用案例&#xff0c;并分析其未来发展趋势。 一、汽修行业的AI知识库应用 汽修行业正通过构建内部知识库来提升服务质量和工作效率。一个完善的内部知识库能…

STM32 BootLoader 刷新项目 (九) 跳转指定地址-命令0x55

STM32 BootLoader 刷新项目 (九) 跳转指定地址-命令0x55 前面我们讲述了几种BootLoader中的命令&#xff0c;包括获取软件版本号、获取帮助、获取芯片ID、读取Flash保护Level。 下面我们来介绍一下BootLoader中最重要的功能之一—跳转&#xff01;就像BootLoader词汇中的Boot…

sqlite3数据库的相关API使用

1 1:使用sqlite3_exec函数读取数据库的数据,将这些数据存入链表遍历该链表&#xff0c;输出“字段”“数据”2:使用sqlite3_get_table读取数据库的数据写一个“字段" "数据”输出的循环 1 #include <stdio.h> #include <string.h> #include <unistd.…

基于Python下载HYCOM-3hourly数据(可无脑用)

基于Python下载HYCOM-3hourly数据 一、安装库二、主要函数2.1 draw_time_range2.2 download2.2.1 下载函数2.2.2 必传入参数&#xff1a;2.2.3 其他参数&#xff1a; 2.3 merge5nc 三、完整代码3.1 乱七八糟版3.2 精简版3.3 get_time_list 四、效果4.1 终端4.2 nc文件4.3 全文本…

Hbase集群搭建

1. 环境 三台节点hadoop 集群zookeeper 集群hbase 1.1环境准备 使用前文hdfs三台节点 1.11 zookeeper搭建 下载 wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz解压 tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz zookee…

为什么用SQL而不是Excel+VBA?

SQL主要服务数据库 SQL服务的是MySQL、Oracle、SQL Sever、Hive等各大数据库&#xff0c;它们都需要SQL来管理、定义。题主理解的SQL只限于查询数据、清洗数据&#xff0c;这些当然ExcelVBA都能做到&#xff0c;任何编程语言都能做到&#xff0c;但事实是SQL是数据库的管理工具…

Android OpenGL ES详解——纹理:纹理过滤GL_NEAREST和GL_LINEAR的区别

目录 一、概念 1、纹理过滤 2、邻近过滤 3、线性过滤 二、邻近过滤和线性过滤的区别 三、源码下载 一、概念 1、纹理过滤 当纹理被应用到三维物体上时&#xff0c;随着物体表面的形状和相机视角的变化&#xff0c;会导致纹理在渲染过程中出现一些问题&#xff0c;如锯齿…

OpenHarmony4.1蓝牙芯片如何适配?触觉智能RK3568主板SBC3568演示

当打开蓝牙后没有反应时&#xff0c;需要排查蓝牙节点是否对应、固件是否加载成功&#xff0c;本文介绍开源鸿蒙OpenHarmony4.1系统下适配蓝牙的方法&#xff0c;触觉智能SBC3568主板演示 修改对应节点 开发板蓝牙硬件连接为UART1&#xff0c;修改对应的节点&#xff0c;路径为…

Kafka高频面试题详解

1、kafka是如何做到高效读写 1&#xff09;Kafka 本身是分布式集群&#xff0c;可以采用分区技术&#xff0c;并行度高 2&#xff09;读数据采用稀疏索引&#xff0c;可以快速定位要消费的数据。&#xff08;mysql中索引多了之后&#xff0c;写入速度就慢了&#xff09; 3&a…

ML 系列: 第 23 节 — 离散概率分布 (多项式分布)

目录 一、说明 二、多项式分布公式 2.1 多项式分布的解释 2.2 示例 2.3 特殊情况&#xff1a;二项分布 2.4 期望值 &#xff08;Mean&#xff09; 2.5 方差 三、总结 3.1 python示例 一、说明 伯努利分布对这样一种情况进行建模&#xff1a;随机变量可以采用两个可能的值&#…

MFC工控项目实例三十实现一个简单的流程

启动按钮夹紧 密闭&#xff0c;时间0到平衡 进气&#xff0c;时间1到进气关&#xff0c;时间2到平衡关 检测&#xff0c;时间3到平衡 排气&#xff0c;时间4到夹紧开、密闭开、排气关。 相关代码 void CSEAL_PRESSUREDlg::OnTimer_2(UINT nIDEvent_2) {// if (nIDEvent_21 &am…

当使用key-value方式进行参数传递时,若key对应的是一个对象或数组结构,如何利用API Post工具进行模拟操作。

1. 后端服务代码如下 RequestMapping("/handle11")public Person handle11(Person person){System.out.println(person);return person;} 2. 后端入参结构 person是一个对象&#xff0c;对象结构如下&#xff1a; public class Person {private String username …

MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并

MySQL技巧之跨服务器数据查询&#xff1a;基础篇-A数据库与B数据库查询合并 上一篇已经描述&#xff1a;借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的链接名: MY_ODBC_MYSQL 以…