【实验要求】:
采用Moore(摩尔型)电路,利用D触发器,设计并实现三位扭环计数器并用Verilog编程语言写出其代码。
【实验目的】?
?
【实验环境】
【实验原理】包括:功能描述,真值表,逻辑方程,电路图,Verilog代码实现(硬件映射代码),实验结果或者仿真结果。
功能描述:扭环计数器(Twisted Ring Counter),也称作反向反馈移位寄存器,是一种特殊的移位寄存器。在三位扭环计数器中,输出不仅从最后一个触发器反馈到第一个,而且是反向反馈。因此,在三位的情况下,它会产生一个3位长度的重复序列。
真值表:
现态 | 激励函数 | 次态 | ||||||
Y2(n) | Y1(n) | Y0(n) | D2 | D1 | D0 | Y2(n+1) | Y1(n+1) | Y0(n+1) |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
电路图:
代码原理以及实现:
//三位扭环计数器Verilog编程代码
module D(
input clk,
input reset,
input d,
output reg q
);
always @(posedge clk or posedge reset)
begin
if(reset) q<=0;
else?q<=d;
end
endmodule
module circle_3(
input clk,
input rst,
output [2:0] q
);
wire d2,d1,d0;
assign?d0=~q[2]&&~(q[1]&&~q[0]);
assign d1=q[0];
assign d2=q[1];
D dt2(clk, rst,d2,q[2]);
D dt1(clk, rst,d1,q[1]);
D dt0(clk, rst,d0,q[0]);
?endmodule
仿真结果(烧写结果):
?
点赞关注 不然我会伤心的呀?