寄存器的设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用VHDL程序实现8位移位寄存器
LIBRARY IEEE USE IEEE.std_logic_1164.all; ENTITY vshiftreg IS PORT (CP,R,DSR,DSL:IN STD_LOGIC; S: STD_LOGIC_VECTOR (2 DOWNTO 0); D: STD_LOGIC_VECTOR (7 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END vshiftreg;
扭环形计数器设计
(1)连接方法: 将移位寄存器的输出 Q3 经反相器后 反馈到J、K输入端。
(2)判断触发器个数: 计数器的模M=2 n (n为移位寄存器的 位数)。
分频器
(三) 时序模块的应用
时 分 数字电子 十位 个位 钟 是 一 种 直 接 十位 个位 用数字显示时 间 的 计 时 装 置 ,译码器 译码器 译码器 译码器 一般由晶体振 十进制 六进制 荡 器 、 分 频 器 、 十二进制 六十进制 计数器、译码 器 、 显 示 器 、 电源 校时电路 晶体振荡器 校时电路和电 源等部分组成。 秒
十位 个位 显示部分
译码器
译码器
译码部分 计数部分
六进制
十进制
六十进制
秒基准 分频器 部分
X 1 X 1 1 0 0 0
X X X X X 1 0 X
0 0 0 0 d0 d1 d2 d3 Q0n Q1n Q2n Q3n
1 0 Q1n Q1n Q0n
Q0n Q0n Q2n Q2n Q1n
Q1n Q1n Q3n Q3n Q2n
Q2n Q2n 1 0 Q2n
(二)四位双向移位寄存器74194
C4 1→/ 2←
0 1
1
0
1
M
0 3
74194
Q4 10 Q5 1 0 Q6 1 0
串行输入
1,4D 3,4D 3,4D 3,4D 3,4D 2,4D
1,4D
1 1 1 1
3,4D 3,4D 3,4D 3,4D 2,4D
Q3 1 0
Q7 10
CP 0 1 2
Q0 0 D0 D1
Q1 0 0 D0
Q2 0 1 0
?
1
1
0
1
解决的办法: 在 4个移位脉冲的作用下 ,依次送入数码。
左移寄存器: 先送高位,后送低位。 右移寄存器: 先送低位,后送高位。
由于该电路为一左移寄存器,数码输入顺序为:
1
0
1
1
欲存入数码1011,即D1D2D3D4= 1011
1 1
0
1
(二)四位双向移位寄存器74194
74194功能表
2.环形计数器
例1:用74195构成M=4的环形计数器。
态序表
Q0 Q1 Q2 Q3
SRG4
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 LOAD 启动 CP J K 1 0 0 0
CT=0
M1[SHIFT] M2[LOAD] C3/1→
注意:
1,3J
1,3K 2,3D 2,3D
( 1 )电路除了有效计数循环 外,还有五个无效循环。
输 R CP DSR 入 MB MA DSL 输 出 D 0 … D3 Q0n+1 Q1n+1 Q2n+1 Q3n+1
0 1 1 1 1 1 1 1
X ↑ 0 ↑ ↑ ↑ ↑ X
X X X 1 0 X X X
X… X d0 … d3 X… X X… X… X… X… X… X X X X X
X 1 X 0 0 1 1 0
假设4是低位寄存器,1是高位寄存器。 由D触发器的特性方程可知:
在移位脉冲的作用下,低 位触发器的状态送给高位,作 为高位的次态输出。
Q4 D n1 n Q3 Q4 n1 n Q2 Q3 n 1 n Q1 Q2
左移寄存器
n1
欲存入数码1011: 采用串行输入
只有一个数据输入端
R信号为异步清 CASE CONV_INTEGER(S) IS 零,不考虑 WHEN 0 => NULL; --保持 CP信号。 WHEN 1 => IQ <=D; --预置 WHEN 2 => IQ <= DSR & IQ(7 DOWNTO 1); --右移 WHEN 3 => IQ <= IQ(6 DOWNTO 0) & DSL; --左移 WHEN 4 => IQ <= IQ(0) & IQ(7 DOWNTO 1); --循环右移 WHEN 5 => IQ <= IQ(6 DOWNTO 0) & IQ(7); --循环左移 WHEN 6 => IQ <= IQ(7) & IQ(7 DOWNTO 1); --算数右移 WHEN 7 => IQ <= IQ(6 DOWNTO 0) & ‘0’; --算数左移 WHEN OTHERS => NULL; END CASE;
SRG4
0 1 1 1 1 0 0 0
0 0 1 1 1 1 0 0 注意:
0 0 0 1 1 1 1 0
0 0 0 0 1 1 1 1
启动 1 CP J K
CT=0
M1[SHIFT] M2[LOAD] C3/1→
1,3J
1,3K 2,3D 2,3D
Q0 Q1 Q2 Q3 Q3
0 0 0 0
(1)电路除了有效计数循环外, 还有一个无效循环。 (2)不能自启动, 工作时首先在 R端加启动脉冲信号清零。
( 2 )不能自启动,工作时首 先在LOAD加启动信号进行预 置。
Q0 Q1 Q2 Q3 Q3
环形计数器设计
(1)连接方法: 将移位寄存器的输出Q3反馈到J、 K输入端。
(2)判断触发器个数: 计数器的模M= n(n为移位寄存器 的个数)。
态序表
Q0 Q1 Q2 Q3
例2:设计一M=8的扭环形计数器。
74194
1 00 Q 1 D1 0 Q 0 1 D2 Q 1 0 1 D3 Q 2 1
C4 1→/ 2← 0 1 0 M 3
1
74194
1 D Q 34 2
1
启动 1 0 D0 D1 D2
DSR
1,4D 3,4D 3,4D 3,4D 3,4D 2,4D
1,4D
D3
3,4D 3,4D 3,4D 3,4D 2,4D
(四)寄存器的应用
1. 数据转换
2. 环形计数器 3. 扭环形计数器
4. 分频器
1.七位串行并行转换
R
CT=0
串行并行
SRG4
( 2)
SRG4
( 1)
CT=0
CP
MA 1 MB DSR 0 1 1
C4 1→/ 2←
0
1
M
0 3
74194
Q0 D0 0 1 D0 Q1 1 0 Q2 1 0
MA 1 MB
Q3 0 1 1
Q4 0 1 1
Q5 0 1 1
wenku.baidu.com
Q6 0 1 1
Q7 0 1 1
MA
MB= Q7
操作 并行送数 右移 右移
1 清零 1 0 1 0 1
&
七位并行串行
直到Q5Q4 Q3Q2 Q1Q0=111111
1
CT=0
SRG4
( 1)
1 MA MB
CT=0
SRG4
( 2)
CP
0
&
1
MA MB
C4 1→/ 2← 0 1 0 M 3
D4
D5 D6
1 D Q 45 3
0 D Q 56 4
重新 预置
D Q 0 67 5
串行 输出
CP
1 2 3
Q0
0 1 1
Q1
Q2
Q3
D2 D1 D0
Q4
Q5
Q6
D5 D4 D3
Q7
D6 D5 D4
MA
1 1 1
MB
1 0 0
操作
并行送数 右移 右移
D0 D1 0 D0 1 0
D3 D4 D2 D3 D1 D2
第三节
寄存器
用来存放数据
一、寄存器的分类 •寄存器 •移位寄存器
单向移位寄存器
双向移位寄存器
二、寄存器
(一)中规模寄存器74175 1.逻辑符号 RG4表示四个触发 器构成的寄存器。 关联数字是1,关 联到时序块的输入 2.功能 端数据送到触发器 CT =0 表示此端子为 的输出。 低电平时,四个触发器的 输出为零。不受任何关联 数字影响,异步清除。 C1表示此端子是时 钟,且上升沿有效。
--异步清除
用CONV_INTEGER将S所属数 END IF; 据类型 STD_LOGIC_VECTOR 根据MA、 MB、 MC的值,用CASE语 转换 在 CASE语句中,用WHEN OTHERS Q <= IQ; 到整数类型。 句描述了8种移位操作。 END PROCESS; 覆盖没有考虑到的值域 。 “NULL”语句描 END vshiftreg_arch; 述无任何操作,即保持原状态。
定义一个中间信号IQ
--FUNCTION SELECT --DATA IN --DATA OUT
ARCHITECTURE vshiftreg_arch OF vshiftreg IS SIGNAL IQ: STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN
PROCESS(CP,R,IQ) BEGIN IF ( R=‘1’) THEN IQ <= ( OTHERS => ‘0’); ELSIF (CP’EVENT AND CP=‘1’) THEN
LIBRARY IEEE USE IEEE.std_logic_1164.all; ENTITY vshiftreg IS PORT (CP,R,DSR,DSL:IN STD_LOGIC; S: STD_LOGIC_VECTOR (2 DOWNTO 0); D: STD_LOGIC_VECTOR (7 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR (7 DOWNTO 0) ); END vshiftreg;
扭环形计数器设计
(1)连接方法: 将移位寄存器的输出 Q3 经反相器后 反馈到J、K输入端。
(2)判断触发器个数: 计数器的模M=2 n (n为移位寄存器的 位数)。
分频器
(三) 时序模块的应用
时 分 数字电子 十位 个位 钟 是 一 种 直 接 十位 个位 用数字显示时 间 的 计 时 装 置 ,译码器 译码器 译码器 译码器 一般由晶体振 十进制 六进制 荡 器 、 分 频 器 、 十二进制 六十进制 计数器、译码 器 、 显 示 器 、 电源 校时电路 晶体振荡器 校时电路和电 源等部分组成。 秒
十位 个位 显示部分
译码器
译码器
译码部分 计数部分
六进制
十进制
六十进制
秒基准 分频器 部分
X 1 X 1 1 0 0 0
X X X X X 1 0 X
0 0 0 0 d0 d1 d2 d3 Q0n Q1n Q2n Q3n
1 0 Q1n Q1n Q0n
Q0n Q0n Q2n Q2n Q1n
Q1n Q1n Q3n Q3n Q2n
Q2n Q2n 1 0 Q2n
(二)四位双向移位寄存器74194
C4 1→/ 2←
0 1
1
0
1
M
0 3
74194
Q4 10 Q5 1 0 Q6 1 0
串行输入
1,4D 3,4D 3,4D 3,4D 3,4D 2,4D
1,4D
1 1 1 1
3,4D 3,4D 3,4D 3,4D 2,4D
Q3 1 0
Q7 10
CP 0 1 2
Q0 0 D0 D1
Q1 0 0 D0
Q2 0 1 0
?
1
1
0
1
解决的办法: 在 4个移位脉冲的作用下 ,依次送入数码。
左移寄存器: 先送高位,后送低位。 右移寄存器: 先送低位,后送高位。
由于该电路为一左移寄存器,数码输入顺序为:
1
0
1
1
欲存入数码1011,即D1D2D3D4= 1011
1 1
0
1
(二)四位双向移位寄存器74194
74194功能表
2.环形计数器
例1:用74195构成M=4的环形计数器。
态序表
Q0 Q1 Q2 Q3
SRG4
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 LOAD 启动 CP J K 1 0 0 0
CT=0
M1[SHIFT] M2[LOAD] C3/1→
注意:
1,3J
1,3K 2,3D 2,3D
( 1 )电路除了有效计数循环 外,还有五个无效循环。
输 R CP DSR 入 MB MA DSL 输 出 D 0 … D3 Q0n+1 Q1n+1 Q2n+1 Q3n+1
0 1 1 1 1 1 1 1
X ↑ 0 ↑ ↑ ↑ ↑ X
X X X 1 0 X X X
X… X d0 … d3 X… X X… X… X… X… X… X X X X X
X 1 X 0 0 1 1 0
假设4是低位寄存器,1是高位寄存器。 由D触发器的特性方程可知:
在移位脉冲的作用下,低 位触发器的状态送给高位,作 为高位的次态输出。
Q4 D n1 n Q3 Q4 n1 n Q2 Q3 n 1 n Q1 Q2
左移寄存器
n1
欲存入数码1011: 采用串行输入
只有一个数据输入端
R信号为异步清 CASE CONV_INTEGER(S) IS 零,不考虑 WHEN 0 => NULL; --保持 CP信号。 WHEN 1 => IQ <=D; --预置 WHEN 2 => IQ <= DSR & IQ(7 DOWNTO 1); --右移 WHEN 3 => IQ <= IQ(6 DOWNTO 0) & DSL; --左移 WHEN 4 => IQ <= IQ(0) & IQ(7 DOWNTO 1); --循环右移 WHEN 5 => IQ <= IQ(6 DOWNTO 0) & IQ(7); --循环左移 WHEN 6 => IQ <= IQ(7) & IQ(7 DOWNTO 1); --算数右移 WHEN 7 => IQ <= IQ(6 DOWNTO 0) & ‘0’; --算数左移 WHEN OTHERS => NULL; END CASE;
SRG4
0 1 1 1 1 0 0 0
0 0 1 1 1 1 0 0 注意:
0 0 0 1 1 1 1 0
0 0 0 0 1 1 1 1
启动 1 CP J K
CT=0
M1[SHIFT] M2[LOAD] C3/1→
1,3J
1,3K 2,3D 2,3D
Q0 Q1 Q2 Q3 Q3
0 0 0 0
(1)电路除了有效计数循环外, 还有一个无效循环。 (2)不能自启动, 工作时首先在 R端加启动脉冲信号清零。
( 2 )不能自启动,工作时首 先在LOAD加启动信号进行预 置。
Q0 Q1 Q2 Q3 Q3
环形计数器设计
(1)连接方法: 将移位寄存器的输出Q3反馈到J、 K输入端。
(2)判断触发器个数: 计数器的模M= n(n为移位寄存器 的个数)。
态序表
Q0 Q1 Q2 Q3
例2:设计一M=8的扭环形计数器。
74194
1 00 Q 1 D1 0 Q 0 1 D2 Q 1 0 1 D3 Q 2 1
C4 1→/ 2← 0 1 0 M 3
1
74194
1 D Q 34 2
1
启动 1 0 D0 D1 D2
DSR
1,4D 3,4D 3,4D 3,4D 3,4D 2,4D
1,4D
D3
3,4D 3,4D 3,4D 3,4D 2,4D
(四)寄存器的应用
1. 数据转换
2. 环形计数器 3. 扭环形计数器
4. 分频器
1.七位串行并行转换
R
CT=0
串行并行
SRG4
( 2)
SRG4
( 1)
CT=0
CP
MA 1 MB DSR 0 1 1
C4 1→/ 2←
0
1
M
0 3
74194
Q0 D0 0 1 D0 Q1 1 0 Q2 1 0
MA 1 MB
Q3 0 1 1
Q4 0 1 1
Q5 0 1 1
wenku.baidu.com
Q6 0 1 1
Q7 0 1 1
MA
MB= Q7
操作 并行送数 右移 右移
1 清零 1 0 1 0 1
&
七位并行串行
直到Q5Q4 Q3Q2 Q1Q0=111111
1
CT=0
SRG4
( 1)
1 MA MB
CT=0
SRG4
( 2)
CP
0
&
1
MA MB
C4 1→/ 2← 0 1 0 M 3
D4
D5 D6
1 D Q 45 3
0 D Q 56 4
重新 预置
D Q 0 67 5
串行 输出
CP
1 2 3
Q0
0 1 1
Q1
Q2
Q3
D2 D1 D0
Q4
Q5
Q6
D5 D4 D3
Q7
D6 D5 D4
MA
1 1 1
MB
1 0 0
操作
并行送数 右移 右移
D0 D1 0 D0 1 0
D3 D4 D2 D3 D1 D2
第三节
寄存器
用来存放数据
一、寄存器的分类 •寄存器 •移位寄存器
单向移位寄存器
双向移位寄存器
二、寄存器
(一)中规模寄存器74175 1.逻辑符号 RG4表示四个触发 器构成的寄存器。 关联数字是1,关 联到时序块的输入 2.功能 端数据送到触发器 CT =0 表示此端子为 的输出。 低电平时,四个触发器的 输出为零。不受任何关联 数字影响,异步清除。 C1表示此端子是时 钟,且上升沿有效。
--异步清除
用CONV_INTEGER将S所属数 END IF; 据类型 STD_LOGIC_VECTOR 根据MA、 MB、 MC的值,用CASE语 转换 在 CASE语句中,用WHEN OTHERS Q <= IQ; 到整数类型。 句描述了8种移位操作。 END PROCESS; 覆盖没有考虑到的值域 。 “NULL”语句描 END vshiftreg_arch; 述无任何操作,即保持原状态。
定义一个中间信号IQ
--FUNCTION SELECT --DATA IN --DATA OUT
ARCHITECTURE vshiftreg_arch OF vshiftreg IS SIGNAL IQ: STD_LOGIC_VECTOR (7 DOWNTO 0); BEGIN
PROCESS(CP,R,IQ) BEGIN IF ( R=‘1’) THEN IQ <= ( OTHERS => ‘0’); ELSIF (CP’EVENT AND CP=‘1’) THEN