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

实验目的

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

模块设计

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

程序源代码

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)beginQ <= 4'bzzzz; end    else if(S[1:0] == 2'b01)beginQ <= {Q[2:0], Q[3]};endelse if(S[1:0] == 2'b10)beginQ <= {Q[0], Q[3:1]};endelse if(S[1:0] == 2'b11)beginQ <= D;endend
endmodule

测试程序源代码

module test;// Inputsreg [1:0] S;reg [3:0] D;reg OE;reg CLK;// Outputswire [3:0] Q;// Instantiate the Unit Under Test (UUT)sy_fifteen uut (.S(S), .D(D), .OE(OE), .CLK(CLK), .Q(Q));alwaysbegin#10 CLK = ~CLK;endinitial begin// Initialize InputsS = 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 hereend
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;

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

杭电数字电路课程设计——移位寄存器相关推荐

  1. 杭电数字电路课程设计-实验十-JK触发器设计实验

    JK触发器设计 实验目的 实验要求 实验原理 程序代码 电路管脚图 引脚配置文件 工程文件 实验目的 学习JK触发器的原理与设计方法: 掌握灵活运用Verilog HDL语言进行各种描述与建模的技巧和 ...

  2. 杭电嵌入式课程设计——上位机

    TCP服务器 课程设计要求 将电脑作为TCP服务器 处理接收到的数据 曲线绘制 图表 曲线 文件写入 工程链接 课程设计要求 如下图: 我们选择采用C#进行开发,因为串口有距离限制不方便我们采集数据, ...

  3. linux打地鼠课程设计,数字电路课程设计打地鼠.doc

    数字电路课程设计打地鼠 北京科技大学 : 数字电子实验仿真 仿真设计项目名称: 打地鼠游戏 院系:计算机与通信工程 专业班级:通信1204 组长:吕文诺 组员:刘豪 庄御乾 孙仲乐 打地鼠游戏 一.实 ...

  4. 数字电路课程设计(电路图,报告)

    数字电路课程设计–大汇总 电子钟 交通灯 抢答器 自动循环计数器 篮球比赛 彩灯控制 拔河控制器 乒乓球游戏 智力竞赛抢答器 八路循环彩灯 病房呼叫系统 步进电机调速控制 答辩自动报时器 电风扇控制 ...

  5. 睿乐购电商课程设计——总结

    睿乐购电商课程设计--总结 项目文件目录说明 命名说明与注意事项 ajax参考 问题记录 jquery 获取表单数据 前后端分离方案 session与cookie token 参考代码 接口注意事项 ...

  6. 【swjtu】数字电路课程设计-音乐播放器

    数字电子技术B 课程设计报告 (2021-2022第1学期) 课题名称:音乐播放器 指导教师:郑  狄 项目成员:

  7. 电容测量仪-(模电、数电电子课程设计,毕业设计)Multisim仿真图以及实物设计(亲测好用)

    声明 本文仅在CSDN发布,其他均为盗版.请支持正版! 正版链接:https://blog.csdn.net/meenr/article/details/117549977 最简单电路实现两个量程档位 ...

  8. 数字电路课程设计 密码锁

    设计要求 1.设计一个密码锁的控制电路,当输入正确代码时,输出开锁信号以推动执行机构工作,用红灯亮.绿灯熄灭表示关锁,用绿灯亮.红灯熄灭表示开锁: 2.在锁的控制电路中储存一个可以修改的4位代码,当开 ...

  9. 杭电研究生-算法设计与分析-期末宝典

    视频推荐 MOOC青岛大学的算法设计与分析 代码实现(Java) 计算机算法设计与分析 算法实现题 源码 Java 重点(翻书找答案-第四版) 往年试卷 ​

最新文章

  1. 轻松学Pytorch – 年龄与性别预测
  2. 如何限制HTML5“数字”元素中的可能输入?
  3. python 批量更换图片格式脚本
  4. Android Activity/Fragment间的数据传递
  5. Vant 1.0 发布:轻量、可靠的移动端 Vue 组件库
  6. 外媒:字节跳动是谷歌云存储第二大客户 但所存数据远不及苹果
  7. 身体出现十个信号当心短命
  8. java 怎么使用 设计模式对业务进行解耦(一)
  9. 网页几种保存类型与html文件格式,HTML 网页文件保存的格式为html或htm (5.0分)
  10. 安卓手机网易云视频,下载的文件位置:
  11. 百度指数 php,百度指数是什么?百度指数有什么用?百度指数怎么用?
  12. Windows64位下DNW的安装及使用
  13. cas112-27-6|三乙二醇/二缩三乙二醇/三甘醇|三乙二醇 透明液体
  14. 一男的为媳妇写的、帅死了
  15. 成都计算机职业学院排名,成都市计算机专业职业院校排名
  16. ROS踩坑之.msg文件未能转化为.h文件
  17. 新形黑猩猩脸部辨识系统 帮助保护朕亨公益组织及时发现网络非法交易
  18. 关于美食商城HTML网页设计-----在线美食订餐网站html模板源码30个页面(功能齐全) html+css+javascript网页设计实例 企业网站制作...
  19. 大数据技术原理与应用—第10讲 Spark(林子雨老师)课后习题
  20. 模型效果差?我建议你掌握这些机器学习模型的超参数优化方法

热门文章

  1. Kubernetes基础详解
  2. 21届毕业生大四实习的生活
  3. 【NOIP模拟赛】七夕祭(环形均分纸牌)
  4. 从等待顾客注册会员到寻找潜在会员,会员管理系统是如何治愈“守株待兔”
  5. 目标检测中的评估指标:PR曲线、AP、mAP
  6. 【论文】Oriented R-CNN for Object Detection
  7. 使用Vue表单时输入框无法输入文字
  8. iOS-app store 的应用下架,这个下架的应用名称 多久后才可以使用?
  9. newmultipartentity php,使用MultipartEntity图片上传
  10. Oracle EBS R12 AP模块主要表结构整理