我是靠谱客的博主 酷酷寒风,这篇文章主要介绍杭电数字电路课程设计——移位寄存器杭电数字电路课程设计-移位寄存器,现在分享给大家,希望可以做个参考。

杭电数字电路课程设计-移位寄存器

实验目的

(1)学习双向移位寄存器。
(2)掌握灵活运用Verilog HDL语言进行各种描述与建模的技巧和方法。

模块设计

模块功能:
用于实现多功能移位寄存器,受使能信号控制,为低电平时有效,根据输入信号S选择不同的功能,当S[1:0]为00时实现保持功能。在时钟上升沿时,当S[1:0]为01时实现左移一位功能,当S[1:0]为10时实现右移一位功能,当S[1:0]为11时实现置入数据D。

程序源代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
module sy_fifteen( input [1:0] S, input [3:0] D, input OE, CLK, output reg [3:0] Q ); always @(posedge OE or posedge CLK) begin if(OE) begin Q <= 4'bzzzz; end else if(S[1:0] == 2'b01) begin Q <= {Q[2:0], Q[3]}; end else if(S[1:0] == 2'b10) begin Q <= {Q[0], Q[3:1]}; end else if(S[1:0] == 2'b11) begin Q <= D; end end endmodule

测试程序源代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
module test; // Inputs reg [1:0] S; reg [3:0] D; reg OE; reg CLK; // Outputs wire [3:0] Q; // Instantiate the Unit Under Test (UUT) sy_fifteen uut ( .S(S), .D(D), .OE(OE), .CLK(CLK), .Q(Q) ); always begin #10 CLK = ~CLK; end initial begin // Initialize Inputs S = 0; D = 0; OE = 1; CLK = 0; // Wait 100 ns for global reset to finish #20; OE = 1; S = 2'b01; D = 4'b1101; #20; OE = 0; S = 2'b11; D = 4'b1101; #20; OE = 0; S = 2'b00; D = 4'b1101; #20; OE = 0; S = 2'b01; D = 4'b1101; #20; OE = 0; S = 2'b10; D = 4'b1101; // Add stimulus here end endmodule

思考与遇到的问题

1.实验出现的问题与解决方案
出现的问题:
本实验在一开始编写仿真测试文件进行测试时与板子上调试时,始终保持Q[3:0]输出高阻态。
解决方案:
仔细研究代码发现并无问题。因本实验实现的是多功能移位寄存器,在我们具体实现的过程中未有初始状态,所以在调试阶段因先使用置入数据D功能,这样才能进行测试功能的正确性,若未置入数据D,则直接调用其他功能则一直默认输入为高阻zzzz。
2.思考与探索
思考题1:欲将本实验的4位多功能移位寄存器改造成具有多片级联扩展的功能,譬如可以使用2片扩展成8位多功能移位寄存器,那么需要对该4位多功能移位寄存器模块作何改动,需要增加几个引脚?功能作何修改?
(1)在模块中增加片选功能;需要增加8个引脚,即4个LED用于显示增加的位数,4个开关用于使用置入D时增加的4位。
(2)在判断功能时,若为左移,则通过片选信号,先选择寄存器1,取出Q[6:3]置入,再选择寄存器2,取出Q[2:0],Q[7]置入。完成功能。
(3)在判断功能时,若为右移,则通过片选信号,先选择寄存器2,取出Q[4:1]置入,再选择寄存器1,取出Q[0],Q[7:5]置入。完成功能。
思考题2:如果要实现一个补码的算术移位寄存器,试结合补码的算术移位规则,考虑移位寄存器模块的设计方法。
(1)首先先判断该数是正数还是负数,若为正数则符号为不变即Q[3] = 0,无论左移还是右移都补0;
(2)若为负数,则符号位不变,右移补1,左移补0;

本文为博主原创,转载请附链接!!
如有问题,请指正~
创作不易~~

最后

以上就是酷酷寒风最近收集整理的关于杭电数字电路课程设计——移位寄存器杭电数字电路课程设计-移位寄存器的全部内容,更多相关杭电数字电路课程设计——移位寄存器杭电数字电路课程设计-移位寄存器内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(133)

评论列表共有 0 条评论

立即
投稿
返回
顶部