lout<=q[7];
end
2'b10:
if(rin)
begin
if(countr>3'b111)
countr=3'b111;
countr=countr+3'b001;
q=d>>countr;
rout<=q[7];
end
default:
q<=d;
endcase
end
end
endmodule
引脚分配如下:
1、带使能控制和异步清零的8位寄存器
set_location_assignmentPIN_Y23-tocclr
set_location_assignmentPIN_M23-toclk
set_location_assignmentPIN_Y24-tocontrol
set_location_assignmentPIN_AB26-tod[7]
set_location_assignmentPIN_AD26-tod[6]
set_location_assignmentPIN_AC26-tod[5]
set_location_assignmentPIN_AB27-tod[4]
set_location_assignmentPIN_AD27-tod[3]
set_location_assignmentPIN_AC27-tod[2]
set_location_assignmentPIN_AC28-tod[1]
set_location_assignmentPIN_AB28-tod[0]
set_location_assignmentPIN_H19-todout[7]
set_location_assignmentPIN_J19-todout[6]
set_location_assignmentPIN_E18-todout[5]
set_location_assignmentPIN_F18-todout[4]
set_location_assignmentPIN_F21-todout[3]
set_location_assignmentPIN_E19-todout[2]
set_location_assignmentPIN_F19-todout[1]
set_location_assignmentPIN_G19-todout[0]
set_location_assignmentPIN_G21-toqb[7]
set_location_assignmentPIN_G22-toqb[6]
set_location_assignmentPIN_G20-toqb[5]
set_location_assignmentPIN_H21-toqb[4]
set_location_assignmentPIN_E24-toqb[3]
set_location_assignmentPIN_E25-toqb[2]
set_location_assignmentPIN_E22-toqb[1]
set_location_assignmentPIN_E21-toqb[0]
set_location_assignmentPIN_AA22-torL
2、有左、右移位功能的8位寄存器
set_location_assignmentPIN_M23-toclk
set_location_assignmentPIN_AB26-tod[7]
set_location_assignmentPIN_AD26-tod[6]
set_location_assignmentPIN_AC26-tod[5]
set_location_assignmentPIN_AB27-tod[4]
set_location_assignmentPIN_AD27-tod[3]
set_location_assignmentPIN_AC27-tod[2]
set_location_assignmentPIN_AC28-tod[1]
set_location_assignmentPIN_AB28-tod[0]
set_location_assignmentPIN_AA23-tolin
set_location_assignmentPIN_Y24-tomode[1]
set_location_assignmentPIN_AA22-tomode[0]
set_location_assignmentPIN_AA24-torin
set_location_assignmentPIN_Y23-toreset
set_location_assignmentPIN_H19-tolout[7]
set_location_assignmentPIN_J19-tolout[6]
set_location_assignmentPIN_E18-tolout[5]
set_location_assignmentPIN_F18-tolout[4]
set_location_assignmentPIN_F21-tolout[3]
set_location_assignmentPIN_E19-tolout[2]
set_location_assignmentPIN_F19-tolout[1]
set_location_assignmentPIN_G19-tolout[0]
set_location_assignmentPIN_G21-torout[7]
set_location_assignmentPIN_G22-torout[6]
set_location_assignmentPIN_G20-torout[5]
set_location_assignmentPIN_H21-torout[4]
set_location_assignmentPIN_E24-torout[3]
set_location_assignmentPIN_E25-torout[2]
set_location_assignmentPIN_E22-torout[1]
set_location_assignmentPIN_E21-torout[0]
set_location_assignmentPIN_J17-toq[0]
set_location_assignmentPIN_G17-toq[1]
set_location_assignmentPIN_J15-toq[2]
set_location_assignmentPIN_H16-toq[3]
set_location_assignmentPIN_J16-toq[4]
set_location_assignmentPIN_H17-toq[5]
set_location_assignmentPIN_F15-toq[6]
set_location_assignmentPIN_G15-toq[7]
五、实验心得
从数字电路到计算机组成原理,做了这么多次实验,我觉得实验过程中最重要的就是细心。
按部就班,平心静气地按照要求来做一般不会有什么大问题,但一旦急躁就很容易出错。
还有一方面,千万不要为了贪一点小方便就投机取巧。
对基本原理的掌握是顺利做好实验的基础,在做第二个实验的时候,因为代码设计问题,导致在进行移位的时候出现时钟信号一次,移位只能移一次的情况,所以在代码设计阶段,我们还是应该考虑全面,形成完整的逻辑思考结构,完成更加全面的功能。
六、实验结论
带使能控制和异步清零的8位寄存器,清零信号为高电平,并且使能信号cl也为高电平时,寄存器在时钟信号clk的上升沿出输出。
有左右移位功能的8位寄存器,清零信号为高电平,并根据mode模式进行左右移位操作,左移位时,移出的最高位赋值给Lout,右移位时,移出的最低位给Rout。
六、实验思考题
1、通过行为描述设计8位寄存器和通过结构描述设计8位寄存器的不同点?
答:
行为描述采用进程语句,顺序描述设计实体的行为,即对设计实体按算法的路径来描述,抽象程度较高,注重表达寄存器是如何工作的,无需知道具体电路结构,只需用一种状态来描述;结构描述采用并行处理语句描述设计使体内的结构组织和元件互联关系,它描述了数据流和运动路线,运动方向和运动结果,体现寄存器具体的数据流及其构成,各组成间的联系,总体架构。
两者最主要的区别在于信号传输的过程,行为描述是顺序进行;结构描述是并行进行。
2、移位寄存器是如何工作的,其功能是如何实现的?
答:
若干个触发器串接起来就构成一个移位寄存器,移位寄存器不仅能够寄存数码,而且具有移位功能。
移位是数字系统和计算机技术中非常重要的一个功能。
如二进制数0101乘以2的运算,可以通过将0101左移一位实现;而除以2的运算则可通过右移一
位实现。
通过模式选择以及时钟信号,来确定是否移位,功能表如下
Reset
CLK
MODE
结果
移位
输出
0
任意
任意
置零
1
上升沿00
Q*=Q
1
上升沿01
Q
左移一位
Q的高位
1
上升沿10
Q
右移一位
Q的低位
1
上升沿11
Q*=D
3、如何给寄存器加入输入、输出控制功能?
答:
在寄存器的结构体中加上对控制端口EN的断言语句来控制输入输出
4、利用时序仿真求出寄存器电路的输出延时,并探究工作频率的增加可能对延迟时间的影响?
答:
由仿真可以看出寄存器的输入输出具有比较大的延时,所以频率高了以后得到的结果就不一定正确