[D-IX] 2(通用)计数器s 2标志线
2015-06-21 16:36
211 查看
EDA:quartus II 13. 1
平台:CycloneV:5CSEMA5F31C6
阅读“《自己设计***CPU与单片机》 ---- 姜咏江”
粗略过渡到门级的一片笔记:[D-VII]
(数)晶体管2逻辑门2寄存器s。个人笔记中的文字表达极差。读书后为计数器的出现编、斗。在quartus II 13.1平台下的计数器和标志线的练习笔记保存地址:to_counters(通用计数器)。
2015.06.18
行波计数器这个名称描述的是一种能够自动记录脉冲数量的计数器。每来一个脉冲计数器就增1。一个n位的计数器计数方式描述如下:
clk(上升沿个数) n位计数器的变化
0 0000….0000
1 0000….0001
2 0000….0010
3 0000….0011
4 0000….0100
……
行波计数器表现出来的规律是每来一个脉冲,最低位发生一次翻转;当且仅当qi-1由1变为0且脉冲来临时,qi(i> 0)发生一次翻转。
位翻转的器件。
JK触发器具有位翻转的功能(至于这个器件是怎么冒出来的,笔记还只能说是书上介绍的)。它由一个SR触发器和4个三态门组成:
Figure1. JK触发器的组成
假设SR锁存器处于稳定状态,当J= K = 1时,clk由0变1时,SR锁存器状态翻转。(JK触发器的一种状态)
4位行波计数器
按照行波计数器描述的规律以及JK触发器的特性,一个4位的行波计数器lp_counter4可用下图描述:
Figure2. 4位行波计数器lp_counter4电路描述图
lp_counter4功能仿真图为:
Figure3. 4位行波计数器lp_counter4功能仿真
当行波计数器计满以后,再来脉冲时会重新开始计数。计数器跟时钟周期相关,所以计数器可以用来计时。像lp_counter4行波计数器一个计数对应一个时钟周期这样的计数器,计数多少就对应多少个计数器输入时钟周期。按照lp_counter4电路描述图做出来的实际计数器,计数过程要能够在一个时钟周期内完成(输入进入计数器到输出有延时)。
2015.06.21
能被赋予初值;
能够保持数据;
能加减k。
“JK触发器”、“寄存器DFF(E)”等都能够保持数据,不妨选取DFF来保持数据。根据通用计数器描述的功能,DFF有3个输入且同时只能选择某一个输入,所以先要斗出一个3路选择器(借用2寄存器s中用与非门斗的3选1电路描述图three21的封装)。结合DFF和three21得到to_counter1电路描述图的框架:
Figure4. to_counter1电路描述图框架
当s0 = s1 = 0时,o = q(保持数据q);s0 = 1,s1 = 0时,o = d(接收外部数据);s0 = 0,s1 = 1时,o = as(q + 1或q – 1)。外部数据d的来源可以是其它器件(如行波计数器)的输出,as的值为q + 1或者q – 1,所以需要斗出一个1位的加减单元。根据限位数对称制理论,减法可由加法完成(负数由负数绝对值的反码加1表示)。故而1位的加减法单元可在1位加法单元(限位数对称制2分段加减法器中的cadder1)的基础之上添加一个异或门得来:
Figure5. 1位加减法单元cas1
cas1能够完成1位二进制(0,1)集合的加减法运算。sub = 0时,完成a + b的运算;sub = l2c = 1时,完成a – b的运算。n个cas1能够组成n位的加减法器。将cas1的s端连接到to_counter1的as端:
Figure6. 1位计数单元to_counter1电路描述图
将n个to_counter1组合在一块,第i个to_counter1的l2c连接到第i-1个to_counter1的l2c。当s0 = 0且s1 = 1时就能够将实现q[n-1..0]加(sub = 0)减(sub = l2c = 1)b[n-1..0]的功能。
Figure7. 4位通用计数器to_counter4电路描述图
通过s0/s1,sub,clk,clrn端口可以统一每一位计数单元的行为。当s0 = s1 = 0时,计数器保持原有值不变;s0 = 1且s1 = 0时,计数器接收外部输入使得q[3..0] = d[3..0](d[3..0]可以是程序中的一个初始值,也可以是行波计数器的输出);s0 = 0且s1 = 1时,sub = l2c = 0时,q[3..0] = q[3..0] + 1,sub = l2c = 1时,q[3..0] = q[3..0] – 1。(这里,将b[3..0]置成了常量1)
to_counter4功能仿真图如下。
Figure8. to_counter4功能仿真
to_counter4可以接收初值,在初值的基础之上可以实现增1计数或者减1计数的操作。通过to_counter4的封装可以得到以4n位的计数器。
以dffe_register8的封装为例:
Figure9. 表寄存器标志位标志线设计
[2015.06.21-16:36]
[ETF Note Over]
平台:CycloneV:5CSEMA5F31C6
阅读“《自己设计***CPU与单片机》 ---- 姜咏江”
粗略过渡到门级的一片笔记:[D-VII]
(数)晶体管2逻辑门2寄存器s。个人笔记中的文字表达极差。读书后为计数器的出现编、斗。在quartus II 13.1平台下的计数器和标志线的练习笔记保存地址:to_counters(通用计数器)。
2015.06.18
1 行波计数器
行波计数器描述的规律。行波计数器这个名称描述的是一种能够自动记录脉冲数量的计数器。每来一个脉冲计数器就增1。一个n位的计数器计数方式描述如下:
clk(上升沿个数) n位计数器的变化
0 0000….0000
1 0000….0001
2 0000….0010
3 0000….0011
4 0000….0100
……
行波计数器表现出来的规律是每来一个脉冲,最低位发生一次翻转;当且仅当qi-1由1变为0且脉冲来临时,qi(i> 0)发生一次翻转。
位翻转的器件。
JK触发器具有位翻转的功能(至于这个器件是怎么冒出来的,笔记还只能说是书上介绍的)。它由一个SR触发器和4个三态门组成:
Figure1. JK触发器的组成
假设SR锁存器处于稳定状态,当J= K = 1时,clk由0变1时,SR锁存器状态翻转。(JK触发器的一种状态)
4位行波计数器
按照行波计数器描述的规律以及JK触发器的特性,一个4位的行波计数器lp_counter4可用下图描述:
Figure2. 4位行波计数器lp_counter4电路描述图
lp_counter4功能仿真图为:
Figure3. 4位行波计数器lp_counter4功能仿真
当行波计数器计满以后,再来脉冲时会重新开始计数。计数器跟时钟周期相关,所以计数器可以用来计时。像lp_counter4行波计数器一个计数对应一个时钟周期这样的计数器,计数多少就对应多少个计数器输入时钟周期。按照lp_counter4电路描述图做出来的实际计数器,计数过程要能够在一个时钟周期内完成(输入进入计数器到输出有延时)。
2015.06.21
2 通用计数器
“通用计数器”描述的功能为:能被赋予初值;
能够保持数据;
能加减k。
2.1 1位计数单元
n位计数器的每一位都应该上述功能。先斗出通用计数器的一位to_counter1,然后将n个to_counter1组合在一起形成n位通用计数器。“JK触发器”、“寄存器DFF(E)”等都能够保持数据,不妨选取DFF来保持数据。根据通用计数器描述的功能,DFF有3个输入且同时只能选择某一个输入,所以先要斗出一个3路选择器(借用2寄存器s中用与非门斗的3选1电路描述图three21的封装)。结合DFF和three21得到to_counter1电路描述图的框架:
Figure4. to_counter1电路描述图框架
当s0 = s1 = 0时,o = q(保持数据q);s0 = 1,s1 = 0时,o = d(接收外部数据);s0 = 0,s1 = 1时,o = as(q + 1或q – 1)。外部数据d的来源可以是其它器件(如行波计数器)的输出,as的值为q + 1或者q – 1,所以需要斗出一个1位的加减单元。根据限位数对称制理论,减法可由加法完成(负数由负数绝对值的反码加1表示)。故而1位的加减法单元可在1位加法单元(限位数对称制2分段加减法器中的cadder1)的基础之上添加一个异或门得来:
Figure5. 1位加减法单元cas1
cas1能够完成1位二进制(0,1)集合的加减法运算。sub = 0时,完成a + b的运算;sub = l2c = 1时,完成a – b的运算。n个cas1能够组成n位的加减法器。将cas1的s端连接到to_counter1的as端:
Figure6. 1位计数单元to_counter1电路描述图
将n个to_counter1组合在一块,第i个to_counter1的l2c连接到第i-1个to_counter1的l2c。当s0 = 0且s1 = 1时就能够将实现q[n-1..0]加(sub = 0)减(sub = l2c = 1)b[n-1..0]的功能。
2.2 n位计数单元
以to_counter1的封装来组成4位计数单元为例。Figure7. 4位通用计数器to_counter4电路描述图
通过s0/s1,sub,clk,clrn端口可以统一每一位计数单元的行为。当s0 = s1 = 0时,计数器保持原有值不变;s0 = 1且s1 = 0时,计数器接收外部输入使得q[3..0] = d[3..0](d[3..0]可以是程序中的一个初始值,也可以是行波计数器的输出);s0 = 0且s1 = 1时,sub = l2c = 0时,q[3..0] = q[3..0] + 1,sub = l2c = 1时,q[3..0] = q[3..0] – 1。(这里,将b[3..0]置成了常量1)
to_counter4功能仿真图如下。
Figure8. to_counter4功能仿真
to_counter4可以接收初值,在初值的基础之上可以实现增1计数或者减1计数的操作。通过to_counter4的封装可以得到以4n位的计数器。
3 标志线
如果当前正在做一个减法运算,运算结果被保存到某个8位寄存器内。要判断这个值是否等于某个特定的值,若等于则将标志寄存器某一位置一。以dffe_register8的封装为例:
Figure9. 表寄存器标志位标志线设计
4 小结
在设计计数器时,要保证使计数增/减1的两个时钟之间的这段时间能够让计数器完成增/减1操作。[2015.06.21-16:36]
[ETF Note Over]
相关文章推荐
- html风格的滚动条
- Java卡环境介绍
- java中String.intern() 方法到底是干啥的?
- android在Canvas使用drawBitmap画一幅画
- 《一个程序猿的生命周期》读后感
- MySQL/MariaDB数据库基于SSL实现主从复制 推荐
- Java Card Applet Development——环境搭建及基础概念
- 由进程名获取进程ID及其主线程ID
- linux-常用命令-待续
- 平民软件的反思
- Android Studio开发第三篇版本管理Git
- 第十五周oj刷题——Problem F: C++习题 商品销售
- Google Java编程风格指南
- 基于VMware的网络配置
- jQuery检查某个元素在网页上是否存在
- 安装交叉编译工具出错,arm-linux-gcc: 没有那个文件或目录
- Python实现线程池代码分享
- 第一章:Spring Data JPA入门
- C++11 Tutorial: Introducing the Move Constructor and the Move Assignment Operator
- 剑指offer 面试题3