实验十寄存器及寄存器堆设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

D5
D6
D7
module register(clk, D, // ... initial S <= 1'b1; assign cr = ~clear; BUFG cc(clk1, D_flop_posedge R0(clk1, R1(clk1, R2(clk1, R3(clk1, R4(clk1, R5(clk1, R6(clk1, R7(clk1, endmodule
实验材料

寄存器及寄存器堆设计
2018/10/11
3
实现含由16个16位寄存器构成的寄存器堆,要求: 支持寄存器地址选择 支持写入任意16位值 支持读取寄存器的值
加入到多功能计算器中。
寄存器及寄存器堆设计
2018/10/11
4
寄存器是计算机常用的基本器件
1 、由同一信号控制的一组相互并联的触发器构成
逻辑与计算机设计基础实验
10
2015~2016秋冬 浙江大学计算机学院实验教学中心
掌握寄存器、锁存器的工作原理及设计方法 掌握寄存器堆的工作原理及设计方法 了解计算机中寄存器及寄存器堆的概念
寄存器及寄存器堆设计
2018/10/11
2
实验设备
装有ISE的计算机系统 Spartan III 实验板 1台 1套
Data out
Data in
寄存器及寄存器堆设计
m bits bus
D
Register n-1 Q
2018/10/11
8
module register_file(clk, cr, Address, Di, Do); // ... initial CE <= 0; assign SEL = Address; assign Y = ~Yi; assign CLK = {8{clk}} && Y; register_32 rr0(CLK[0], Di, cr, Do0 ); register_32 rr1(CLK[1], Di, cr, Do1 ); register_32 rr2(CLK[2], Di, cr, Do2 ); register_32 rr3(CLK[3], Di, cr, Do3 ); register_32 rr4(CLK[4], Di, cr, Do4 ); register_32 rr5(CLK[5], Di, cr, Do5 ); register_32 rr6(CLK[6], Di, cr, Do6 ); register_32 rr7(CLK[7], Di, cr, Do7 ); decode_3_8 d(Address[2], Address[1], Address[0], CE, Yi); MUX_8_1 mux(SEL, Do0, Do1, Do2, Do3, Do4, Do5, Do6, Do7, Do); endmodule
Qbar[0]), Qbar[1]), Qbar[2]), Qbar[3]), Qbar[4]), Qbar[5]), Qbar[6]), Qbar[7]);
2018/10/11 6
• 锁存器由多个一位锁存器/触发器并联构成
一般采用电平控制锁存:
高电平时置入数据
低电平时锁存数据,并指示数据稳定 带使能端的RS触发器实现的锁存器
D0来自百度文库
D1
D2
D3
D4
D5
D6
D7
寄存器及寄存器堆设计
2018/10/11
5
clear
Q R
Q0
Q S R Q
Q1
Q S R Q
Q2
Q S R Q
Q3
Q S R Q
Q4
Q S R Q
Q5
Q S R Q
Q6
Q S R Q
Q7
Q
S
Cp
Cp
Cp
Cp
Cp
Cp
Cp
Cp
D
D
D
D
D
D
D
D
clk
D0
D1
D2
D3
D4
• 寄存器组是多个寄存器组成的集合
寄存器写:寄存器地址→变量译码器
寄存器读:寄存器地址→数据选择器
write clk C 0 1 D C D Register 0 Q
address log2 n
变 量 译 码 器
n-2 n-1
Register 1
Q
C D C
Register n-2 Q
数 据 选 择 器
module //... assign assign assign RS_CE lock(lock, D, clear, Q); cr = {8{clear}} | (~D); Din = D & (~{8{clear}}); lock1 = lock | clear; R0(lock1, cr[0], Din[0], R1(lock1, cr[1], Din[1], R2(lock1, cr[2], Din[2], R3(lock1, cr[3], Din[3], R4(lock1, cr[4], Din[4], R5(lock1, cr[5], Din[5], R6(lock1, cr[6], Din[6], R7(lock1, cr[7], Din[7], endmodule
寄存器及寄存器堆设计
置入
锁存
Q[0], Q[1], Q[2], Q[3], Q[4], Q[5], Q[6], Q[7],
Qbar[0]), Qbar[1]), Qbar[2]), Qbar[3]), Qbar[4]), Qbar[5]), Qbar[6]), Qbar[7]);
2018/10/11 7
2 、包含存储、处理和传输,可构成寄存器组使用
3 、边沿D触发器构成的8位基本寄存器的结构 如下
clear
Q R
Q0
Q S R Q
Q1
Q S R Q
Q2
Q S R Q
Q3
Q S R Q
Q4
Q S R Q
Q5
Q S R Q
Q6
Q S R Q
Q7
Q
S
Cp
Cp
Cp
Cp
Cp
Cp
Cp
Cp
D
D
D
D
D
D
D
D
clk
寄存器及寄存器堆设计
clear, Q );
clk); D[0], D[1], D[2], D[3], D[4], D[5], D[6], D[7],
cr, cr, cr, cr, cr, cr, cr, cr,
S, S, S, S, S, S, S, S,
Q[0], Q[1], Q[2], Q[3], Q[4], Q[5], Q[6], Q[7],
module register_32(cl, Di, cr, Dot); // ... BUFG cck(cck,cl); always @(posedge cl) Dot <= (!cr) ? 0 : Di; endmodule
相关文档
最新文档