文档库 最新最全的文档下载
当前位置:文档库 › 移位寄存器实验报告

移位寄存器实验报告

移位寄存器实验报告
移位寄存器实验报告

移位寄存器实验报告

姓名:陈素学号:3120100621 专业:软件工程课程名称:逻辑与计算机设计基础实验同组学生姓名:张闻

实验时间:y yyy-mm-dd 实验地点:紫金港东4-509 指导老师:一、实验目的和要求

掌握移位寄存器的工作原理及设计方法

掌握串、并数据转换的概念与方法

了解序列信号在CPU控制器设计中的应用

二、实验内容和原理

2.1 实验原理

带并行置入的移位寄存器

移位寄存器:每来一个时钟脉冲,寄存器中的数据按顺序向左或向右移动一位必须采用主从触发器或边沿触发器

不能采用电平触发器

数据移动方式:左移、右移

数据输入输出方式

串行输入,串行输出

串行输入,并行输出

并行输入,串行输出

串行输入的移位寄存器

使用D触发器,可构成串行输入的移位寄存器

2.2 标题

<正文>

带并行输入的右移移位寄存器

数据输入移位寄存器的方式:串行输入、并行输入

带并行输入的8位右移移位寄存器

module shift_reg(clk, S, s_in, p_in, Q); input wire clk, S, s_in; input wire [7:0] p_in; output wire [7:0] Q; wire [7:0] D; wire nS;

FD FDQ0(.C(clk), .D(D[0]), .Q(Q[0])), FDQ1(.C(clk), .D(D[1]), .Q(Q[1])), FDQ2(.C(clk), .D(D[2]), .Q(Q[2])), FDQ3(.C(clk), .D(D[3]), .Q(Q[3])), FDQ4(.C(clk), .D(D[4]), .Q(Q[4])), FDQ5(.C(clk), .D(D[5]), .Q(Q[5])), FDQ6(.C(clk), .D(D[6]), .Q(Q[6])), FDQ7(.C(clk), .D(D[7]), .Q(Q[7]));

OR2 D0_L(.I0(L_0), .I1(R_0), .O(D[0])), D1_L(.I0(L_1), .I1(R_1), .O(D[1])), D2_L(.I0(L_2), .I1(R_2), .O(D[2])), D3_L(.I0(L_3), .I1(R_3), .O(D[3])), D4_L(.I0(L_4), .I1(R_4), .O(D[4])),

串行输入

S

D5_L(.I0(L_5), .I1(R_5), .O(D[5])), D6_L(.I0(L_6), .I1(R_6), .O(D[6])), D7_L(.I0(L_7), .I1(R_7), .O(D[7]));

并行-串行转换器 没有启动命令时

并行-串行转换器

ser_out

并行输入par_in 移位输入7位并行-串行转换器

ser_out

并行输入par_in 移位输入7位并行-串行转换器

2.1 实验内容

用Verilog HDL语言,采用结构化描述方法设计一个8位带并行输入的右移移位寄存器。

编写该移位寄存器的代码模块shift_reg

针对该模块,编写波形仿真输入代码

进行波形仿真,并分析仿真结果是否正确

设计16位带并行输入的右移移位寄存器。

2、增加到计算器模块中。

3、修改相关代码。

4、修改ucf文件。

5、下载并验证。

三、主要仪器设备

必须采用编号样式,设备的数量和单位应对齐。示范如下:

1.xx开发板1套

2.装有ISE的PC机1台

四、操作方法与实验步骤

修改TOP程序,添加移位寄存器

Module top(input wire clk, input wire [7:0]btn_in, input wire

[3:0]switch, output wire [11:0]anode, output wire [15:0]segment)

reg [15:0] op1,op2;

reg [15:0] display_num;

wire [11:0] btn_out;

wire [15:0] result,cnt;

wire [31:0] display_num32b;

wire clk_1s;

wire [15:0] Q1,data_out;

initial begin

op1=16'b0011_0011_0011_0011;//3333

op2=16'b0010_0010_0010_0010;//2222

end

pbdebounce p0(clk,btn_in[0],btn_out[0]);

display m0(clk, display_num,anode[3:0], segment[7:0]); //display module display32bits m1(clk,display_num32b,anode[11:4],segment[15:8]); calculate_result m2(switch,op1, op2, result); //calculate result

counter_1s m3(clk, clk_1s);

couter_16reversible m4(clk_1s&btn_out[8],switch[4],cnt,Rc);

shift_reg m6(btn_out[9], switch[8],switch[9] ,op1, Q1);

regfile m7(btn_out[10],btn_out[11],switch[13:10], op2, data_out); always @(posedge btn_out[7]) op2[ 15: 12]<= op2[15: 12] + 4'd1; assign display_num32b = {op2,op1};

//assign display_num=result;

always @* begin

case (switch[7:6])

2'b00: display_num = result; //result

2'b01: display_num = cnt;

2'b10: display_num = Q1;

2'b11: begin if (btn_out[10]==1) display_num = op2; else display_num = data_out;end endcase

end

endmodule

Regfile--16程序模块1

module regfile(wclk, rclk, address, data_in, data_out);

input wire wclk,rclk;

input wire [3:0]address;

input wire [15:0]data_in;

output wire [15:0]data_out;

wire [15:0] Yi;

wire [15:0] clk;

assign clk[15:0] = {16{wclk}} & Yi;

wire [15:0] regQ0,regQ1,regQ2,regQ3,

regQ4,regQ5,regQ6,regQ7,regQ8,regQ9,

regQ10,regQ11,regQ12,regQ13,regQ14,regQ15;

decode_4_16 M0(address[3:0],wclk,Yi);//4-16译码器

mux_16_1 M1(rclk, address[3:0],

regQ0, regQ1, regQ2, regQ3,

regQ4, regQ5, regQ6, regQ7,

regQ8, regQ9, regQ10,regQ11,

regQ12,regQ13,regQ14,regQ15,

data_out);//16-1:多选一

register16 R0(clk[0], data_in, regQ0),//clk=wclk&Yi

R1(clk[1], data_in, regQ1),

R2(clk[2], data_in, regQ2),

R3(clk[3], data_in, regQ3),

R4(clk[4], data_in, regQ4),

R5(clk[5], data_in, regQ5),

R6(clk[6], data_in, regQ6),

R7(clk[7], data_in, regQ7),

R8(clk[8], data_in, regQ8),

R9(clk[9], data_in, regQ9),

R10(clk[10], data_in, regQ10),

R11(clk[11], data_in, regQ11),

R12(clk[12], data_in, regQ12),

R13(clk[13], data_in, regQ13),

R14(clk[14], data_in, regQ14),

R15(clk[15], data_in, regQ15);

endmodule

4位4—16变量译码器程序模块

module decode_4_16(address, wclk, Yi);

input wire [3:0]address;

input wire wclk;

output reg [15:0]Yi;

always @*begin

if(wclk == 1'b1)

case(address[3:0])

4'b0000: Yi = 16'h0001;

4'b0001: Yi = 16'h0002;

4'b0010: Yi = 16'h0004;

4'b0011: Yi = 16'h0008;

4'b0100: Yi = 16'h0010;

4'b0101: Yi = 16'h0020;

4'b0110: Yi = 16'h0040;

4'b0111: Yi = 16'h0080;

4'b1000: Yi = 16'h0100;

4'b1001: Yi = 16'h0200;

4'b1010: Yi = 16'h0400;

4'b1011: Yi = 16'h0800;

4'b1100: Yi = 16'h1000;

4'b1101: Yi = 16'h2000;

4'b1110: Yi = 16'h4000;

4'b1111: Yi = 16'h8000;

endcase

else

Yi = 16'h0000;

end

endmodule

十六选一的数据选择器程序模块

module mux_16_1(rclk, address, regQ0, regQ1, regQ2, regQ3, regQ4, regQ5, regQ6, regQ7, regQ8, regQ9, regQ10, regQ11, regQ12, regQ13, regQ14, regQ15,data_out);

input wire rclk;

input wire [3:0]address;

input wire [15:0]regQ0, regQ1, regQ2, regQ3, regQ4, regQ5, regQ6, regQ7, regQ8,

regQ9, regQ10, regQ11, regQ12, regQ13, regQ14, regQ15;

output reg [15:0]data_out;

always @(posedge rclk)begin

//if(rclk == 1'b1)

case (address[3:0])

4'b0000: data_out = regQ0;

4'b0001: data_out = regQ1;

4'b0010: data_out = regQ2;

4'b0011: data_out = regQ3;

4'b0100: data_out = regQ4;

4'b0101: data_out = regQ5;

4'b0110: data_out = regQ6;

4'b0111: data_out = regQ7;

4'b1000: data_out = regQ8;

4'b1001: data_out = regQ9;

4'b1010: data_out = regQ10;

4'b1011: data_out = regQ11;

4'b1100: data_out = regQ12;

4'b1101: data_out = regQ13;

4'b1110: data_out = regQ14;

4'b1111: data_out = regQ15;

endcase

end

endmodule

16位D触发器程序模块

module register16(cl, Di, Dot);//无R,D触发器

input wire cl;

input wire [15:0] Di;

output reg [15:0] Dot;

always @(posedge cl)

Dot <= Di;

endmodule

16位全加器

module adder_16bits(A, B, Ctr, S, Co);

parameter size=16;

input [15:1] A;

input [15:1] B;

input Ctr;

output [11:1] S;

output Co;

wire[size-1:1] Ctemp;

wire[size:1] Bo;

assign Bo={16{Ctr}}^B;

adder_1bit A1(.a(A[1]),.b(Bo[1]),.ci(Ctr),.s(S[1]),.co(Ctemp[1])), A2(A[2],Bo[2],Ctemp[1],S[2],Ctemp[2]),

A3(A[3],Bo[3],Ctemp[2],S[3],Ctemp[3]),

A4(A[4],Bo[4],Ctemp[3],S[4],Ctemp[4]),

A5(A[5],Bo[5],Ctemp[4],S[5],Ctemp[5]),

A6(A[6],Bo[6],Ctemp[5],S[6],Ctemp[6]),

A7(A[7],Bo[7],Ctemp[6],S[7],Ctemp[7]),

A8(A[8],Bo[8],Ctemp[7],S[8],Ctemp[8]),

A9(A[9],Bo[9],Ctemp[8],S[9],Ctemp[9]),

A10(A[10],Bo[10],Ctemp[9],S[10],Ctemp[10]),

A11(A[11],Bo[11],Ctemp[10],S[11],Ctemp[11]),

A12(A[12],Bo[12],Ctemp[11],S[12],Ctemp[12]),

A13(A[13],Bo[13],Ctemp[12],S[13],Ctemp[13]),

A14(A[14],Bo[14],Ctemp[13],S[14],Ctemp[14]),

A15(A[15],Bo[15],Ctemp[14],S[15],Ctemp[15]),

A16(A[16],Bo[16],Ctemp[15],S[16],Co);

Endmodule

一位全加器

module adder_1bit(a, b, ci, s, co);

// port declaration

input wire a,b,ci;

output wire s,co;

and (c1,a,b), (c2,b,ci), (c3,a,ci);

xor (s1,a,b), (s,s1,ci);

or (co,c1,c2,c3);

endmodule

拓展32位显示的程序

module display32bits(clk,disp_num,digit_anode,segment);

input clk;

input [31:0] disp_num;

output [7:0] digit_anode;

output [7:0] segment;

reg [7:0] digit_anode;

reg [7:0] segment;

reg [12:0] cnt=0;

wire [31:0] disp_num;

reg [3:0] num;

always@(posedge clk)begin

case(cnt[12:10])

3'b000:begin

digit_anode <= 8'b11111110;

num <= disp_num[3:0];

end

3'b001:begin

digit_anode <= 8'b11111101;

num <= disp_num[7:4];

end

3'b010:begin

digit_anode <= 8'b11111011;

num <= disp_num[11:8];

end

3'b011:begin

digit_anode <= 8'b11110111;

num <= disp_num[15:12];

end

3'b100:begin

digit_anode <= 8'b11101111;

num <= disp_num[19:16];

end

3'b101:begin

digit_anode <= 8'b11011111;

num <= disp_num[23:20];

end

3'b110:begin

digit_anode <= 8'b10111111;

num <= disp_num[27:24];

end

3'b111:begin

digit_anode <= 8'b01111111;

num <= disp_num[31:28];

end

endcase

case(num)

4'b0000:segment<=8'b11000000;

4'b0001:segment<=8'b11111001;

4'b0010:segment<=8'b10100100;

4'b0011:segment<=8'b10110000;

4'b0100:segment<=8'b10011001;

4'b0101:segment<=8'b10010010;

4'b0110:segment<=8'b10000010;

4'b0111:segment<=8'b11111000;

4'b1000:segment<=8'b10000000;

4'b1001:segment<=8'b10010000;

4'b1010:segment<=8'b10001000;

4'b1011:segment<=8'b10000011;

4'b1100:segment<=8'b11000110;

4'b1101:segment<=8'b10100001;

4'b1110:segment<=8'b10000110;

4'b1111:segment<=8'b10001110;

endcase

end

always@(posedge clk) begin

cnt<=cnt+1;

end

endmodule

引脚代码

NET "clk" LOC= "T9";

NET "btn_in[0]" loc="E6";

NET "btn_in[1]" loc="D5";

NET "btn_in[2]" loc="C5";

NET "btn_in[3]" loc="D6";

NET "btn_in[4]" loc="C6";

NET "btn_in[5]" loc="E7";

NET "btn_in[6]" loc="C7";

NET "btn_in[7]" loc="D7";

NET "btn_in[8]" loc="M13";

NET "btn_in[9]" loc="M14";

NET "btn_in[10]" loc="L13";

NET "btn_in[11]" loc="L14";

NET "switch[0]" LOC="F12";

NET "switch[1]" LOC="G12";

NET "switch[2]" LOC="H14";

NET "switch[3]" LOC="H13";

NET "switch[4]" LOC="J14";

NET "switch[5]" LOC="J13";

NET "switch[6]" LOC="K14";

NET "switch[7]" LOC="K13";

NET "switch[8]" LOC="M10";

NET "switch[9]" LOC="F3";

NET "switch[10]" LOC="H4";

NET "switch[11]" LOC="E4";

NET "switch[12]" LOC="G5";

NET "switch[13]" LOC="F4";

NET "anode[0]" LOC="D14";

NET "anode[1]" LOC="G14";

NET "anode[2]" LOC="F14";

NET "anode[3]" LOC="E13";

NET "segment[0]" LOC="E14";

NET "segment[1]" LOC="G13";

NET "segment[2]" LOC="N15";

NET "segment[3]" LOC="P15";

NET "segment[4]" LOC="R16";

NET "segment[5]" LOC="F13";

NET "segment[6]" LOC="N16";

NET "segment[7]" LOC="P16";

NET "anode[4]" LOC = "B11" ; NET "anode[5]" LOC = "A10" ; NET "anode[6]" LOC = "B10" ; NET "anode[7]" LOC = "A9" ; NET "anode[8]" LOC = "A8" ; NET "anode[9]" LOC = "B8" ; NET "anode[10]" LOC = "A7" ; NET "anode[11]" LOC = "B7" ; NET "segment[8]" LOC = "C8" ; NET "segment[9]" LOC = "D8" ; NET "segment[10]" LOC = "C9" ; NET "segment[11]" LOC = "D10" ; NET "segment[12]" LOC = "A3" ; NET "segment[13]" LOC = "B4" ; NET "segment[14]" LOC = "A4" ; NET "segment[15]" LOC = "B5" ; module shift_reg(clk, S, s_in, p_in, Q); input wire clk, S, s_in;

input wire [15:0] p_in;

output wire [15:0] Q;

wire D[15:0];

wire nS;

FD FDQ0(.C(clk), .D(D[0]), .Q(Q[0])), FDQ1(.C(clk), .D(D[1]), .Q(Q[1])), FDQ2(.C(clk), .D(D[2]), .Q(Q[2])), FDQ3(.C(clk), .D(D[3]), .Q(Q[3])), FDQ4(.C(clk), .D(D[4]), .Q(Q[4])), FDQ5(.C(clk), .D(D[5]), .Q(Q[5])), FDQ6(.C(clk), .D(D[6]), .Q(Q[6])), FDQ7(.C(clk), .D(D[7]), .Q(Q[7])), FDQ8(.C(clk), .D(D[8]), .Q(Q[8])), FDQ9(.C(clk), .D(D[9]), .Q(Q[9])), FDQ10(.C(clk), .D(D[10]), .Q(Q[10])), FDQ11(.C(clk), .D(D[11]), .Q(Q[11])), FDQ12(.C(clk), .D(D[12]), .Q(Q[12])), FDQ13(.C(clk), .D(D[13]), .Q(Q[13])), FDQ14(.C(clk), .D(D[14]), .Q(Q[14])), FDQ15(.C(clk), .D(D[15]), .Q(Q[15])); OR2 D0_L(.I0(L_0), .I1(R_0), .O(D[0])), D1_L(.I0(L_1), .I1(R_1), .O(D[1])),

D2_L(.I0(L_2), .I1(R_2), .O(D[2])),

D3_L(.I0(L_3), .I1(R_3), .O(D[3])),

D4_L(.I0(L_4), .I1(R_4), .O(D[4])),

D5_L(.I0(L_5), .I1(R_5), .O(D[5])),

D6_L(.I0(L_6), .I1(R_6), .O(D[6])),

D7_L(.I0(L_7), .I1(R_7), .O(D[7])),

D8_L(.I0(L_8), .I1(R_8), .O(D[8])),

D9_L(.I0(L_9), .I1(R_9), .O(D[9])),

D10_L(.I0(L_10), .I1(R_10), .O(D[10])), D11_L(.I0(L_11), .I1(R_11), .O(D[11])), D12_L(.I0(L_12), .I1(R_12), .O(D[12])), D13_L(.I0(L_13), .I1(R_13), .O(D[13])),

D14_L(.I0(L_14), .I1(R_14), .O(D[14])),

D15_L(.I0(L_15), .I1(R_15), .O(D[15]));

AND2 L0_L(.I0(Q[1]), .I1(nS), .O(L_0)),

L1_L(.I0(Q[2]), .I1(nS), .O(L_1)),

L2_L(.I0(Q[3]), .I1(nS), .O(L_2)),

L3_L(.I0(Q[4]), .I1(nS), .O(L_3)),

L4_L(.I0(Q[5]), .I1(nS), .O(L_4)),

L5_L(.I0(Q[6]), .I1(nS), .O(L_5)),

L6_L(.I0(Q[7]), .I1(nS), .O(L_6)),

L7_L(.I0(Q[8]), .I1(nS), .O(L_7)),

L8_L(.I0(Q[9]), .I1(nS), .O(L_8)),

L9_L(.I0(Q[10]), .I1(nS), .O(L_9)),

L10_L(.I0(Q[11]), .I1(nS), .O(L_10)),

L11_L(.I0(Q[12]), .I1(nS), .O(L_11)),

L12_L(.I0(Q[13]), .I1(nS), .O(L_12)),

L13_L(.I0(Q[14]), .I1(nS), .O(L_13)),

L14_L(.I0(Q[15]), .I1(nS), .O(L_14)),

L15_L(.I0(s_in), .I1(nS), .O(L_15));

AND2 R0_L(.I0(p_in[0]), .I1(S), .O(R_0)),

R1_L(.I0(p_in[1]), .I1(S), .O(R_1)),

R2_L(.I0(p_in[2]), .I1(S), .O(R_2)),

R3_L(.I0(p_in[3]), .I1(S), .O(R_3)),

R4_L(.I0(p_in[4]), .I1(S), .O(R_4)),

R5_L(.I0(p_in[5]), .I1(S), .O(R_5)),

R6_L(.I0(p_in[6]), .I1(S), .O(R_6)),

R7_L(.I0(p_in[7]), .I1(S), .O(R_7)),

R8_L(.I0(p_in[8]), .I1(S), .O(R_8)),

R9_L(.I0(p_in[9]), .I1(S), .O(R_9)),

R10_L(.I0(p_in[10]), .I1(S), .O(R_10)),

R11_L(.I0(p_in[11]), .I1(S), .O(R_11)),

R12_L(.I0(p_in[12]), .I1(S), .O(R_12)),

R13_L(.I0(p_in[13]), .I1(S), .O(R_13)),

R14_L(.I0(p_in[14]), .I1(S), .O(R_14)),

R15_L(.I0(p_in[15]), .I1(S), .O(R_15));

INV nS_L(.I(S), .O(nS));

endmodule

报告的第二、三、四部分是重点,请认真书写。

五、实验结果与分析

btn[1] CLK上升沿作为移位和并行置数寄存器打入脉冲

六、讨论、心得

这次实验计算机下载到板上的时候出了问题,所以没能完全完成。

移位寄存器 第三章答案

第三章习题参考答案 1.画出以1)(2 4 6 +++=x x x x f 为联接多项式的线性移位寄存器逻辑框图,及其对应的状态图。 解:由1)(2 46+++=x x x x f ,得反馈函数为531621),,,(x x x x x x f ++=Λ,故 (1)逻辑框图: (2)状态图: 状态圈-1: 状态圈-2: 状态圈-3: 状态圈-4: 状态圈-5: 状态圈-6: 状态圈-7: 状态圈-8:

状态圈-9: 状态圈-10: 状态圈-11: 状态圈-12: 2.已知图3-2所示的7级线性反馈移位寄存器: 图3-2 (1)绘出该移位寄存器的线性递推式,联接多项式及特征多项式。 (2)给出状态转移矩阵。 (3)设初态为(1 1 1 1 1 1 1),给出输出序列a 。 解:(1)由逻辑框图得,递推式为: k k k k a a a a ++=+++357 ()0≥k 。 联接多项式为:7 4 2 1)(x x x x f +++=。 特征多项式为:7531)(~ x x x x f +++=

(2)状态转移矩阵:? ? ???? ? ?? ? ? ??0100000 101000000010001000100 000001000000011000000。 (3)输出序列:)111111111(ΛΛ=- a 。 3.设5级线性反馈移位寄存器的联接多项式为1)(2 5 ++=x x x f ,初态为(10101)。求输出序列a 。 解:由联接多项式得,反馈函数为:41521),,,(x x x x x f +=Λ。故以)10101(为初态的状态转移图为: 10101 01010001010001000001100000100000100100100100110100110100110100110100111100111100111101111101111001110001110001110000110010110110111110101110101110101110101→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→ 由此可得,输出序列为:=a 44444443444444421一个周期 0110100100000011111001010111011…。 4.证明:n 级线性反馈移位寄存器的状态转移变换是n 维线性空间n F 2上的线性变换。 证明:设f T 为n 级线性移位寄存器的状态转移变换,对n F 2,∈?βα,令),,,(110-=n a a a Λα, ),,,(110-=n b b b Λβ,有: ),,,(),,,()(121110∑=--==n i i n i n f f a c a a a a a T T ΛΛα, ),,,(),,,()(1 21110∑=--==n i i n i n f f b c b b b b b T T ΛΛβ。 ) ()() ,,,(),,,() )(,,,() ,,,()(1 211 2112211111100βαβαf f i n n i i i n n i i n i i n i n i n n f f T T b c b b a c a a b a c b a b a b a b a b a T T +=+=+++=+++=+-=-==----∑∑∑ΛΛΛΛ 对 2F k ∈?, ))((),,,(),,,()(1 21110ααf i n n i i n f f T k a c k ka ka ka ka ka T k T ===-=-∑ΛΛ。 故n 级线性反馈移位寄存器的状态转移变换是n 为线性空间n F 2上的线性变换。

寄存器的原理及应用

课题9:寄存器的原理及应用 课型:讲授 教学目的: 掌握数码寄存器和移位寄存器的逻辑功能 教学重点:掌握中规模四位双向移位寄存器的逻辑功能 教学难点:掌握中规模四位双向移位寄存器的逻辑功能 复习、提问: 写出RS触发器、JK触发器、D触发器、T触发器、T`触发器的逻辑 功能、特性方程。 教学过程: 寄存器被广泛应用于数字系统和计算机中,它由触发器组成,是一种用来暂时存放二进制数码的逻辑部件。一个触发器可以存放一位二进制代码,因此n 位代码寄存器应由n个触发器组成。有些寄存器由门电路构成控制电路,以保证信号的接收和清除。 寄存器存放数据的方式有并行和串行两种。并行方式是数码从各对应输入端同时输入到寄存器中,串行方式是数码从一个输入端逐位输入到寄存器中。 寄存器取出数据的方式也有并行输出和串行输出两种。并行输出方式中,被取出的数码同时出现在各位的输出端。串行输出方式中,被取出的数码在一个输出端逐位出现。 寄存器分为数码寄存器和移位寄存器。 一、数码寄存器 数码寄存器具有存储二进制代码,并可输出所存二进制代码的功能。按接收数码的方式可分为:单拍式和双拍式。 单拍式:接收数据后直接把触发器置为相应的数据,不考虑初态。 双拍式:接收数据之前,先用复"0"脉冲把所有的触发器恢复为"0",第二拍把触发器置为接收的数据。 1、双拍工作方式的数码寄存器 双拍工作方式是指接收数码时,先清零,再接收数码。

分析下图四位数码寄存器逻辑图。它的核心部分是4个D 触发器。其工作过程: (1) 清零。CR=0,异步清零。即有:Q 3n+1Q 2n+1Q 1n+!Q 0n+1=0000 (2) 送数。CR=1时,CP 上升沿送数 Q 3n+1Q 2n+1Q 1n+!Q 0n+1=D 3D 2D 1 D 0 (3) 保持。在CR=1、CP 上升沿以外时间,寄存器内容将保持不变。实 现了数码寄存的功能。 2、单拍工作方式的数据寄存器 单拍工作方式是指只需一个接收脉冲就可以完成接收数码的工作方式。集成数码寄存器几乎都采用单拍工作方式。 数码寄存器要求所存的代码与输入代码相同,故由D 触发器构成。 分析下图D 触发器组成的4位数据寄存器的逻辑功能。 无论寄存器中原来的内容是什么,只要送数在控制时钟脉冲CP 上升沿到来时,加在并行数据输入端的数据D 0~D 3,就立即被送入进寄存器中,即有:Q 3n+1Q 2n+1Q 1n+!Q 0n+1=D 3D 2D 1D 0。 二、移位寄存器 移位寄存器具有数码寄存和移位两个功能,在移位脉冲的作用下,数码如向左移一位,则称为左移,反之称为右移。 移位寄存器具有单向移位功能的称为单向移位寄存器,即可向左移也可向右移的称为双向移位寄存器。 1、单向移位寄存器 (1)、右移寄存器

线性反馈移位寄存器(LFSR)

最近一直在研究信道编码,发现在信道编码里面有一个电路比较重要也比较有趣,那就是线性反馈移位寄存器LFSR ,相信大家对LFSR 电路也不陌生了,在通信领域lfsr有着很广泛的应用,比如说M序列,扰码,信道编码,密码学这方面都有很广泛的应用,LFRS的结构一般如下图: 其中他需要一个生成多项式为: 这个多项式是一个本原多项式,然后知道这个电路有一些有意思的性质,下面我以m = 3 来做个例子具体的电路图如下所示: 假设开始的时候(D2,D1,D0 )= (0,0,1),那么每过一个时钟周期会进行跳变一次, 可以看到具体的跳变如下所示:

然后我们可以看到这个计数器循环起来了,很好玩吧,无论进入那样一个状态除了0之外,都可以循环着回来,其实这里就相当于了一个3bit的伪随机数,很有意思,不是所有的多项式都有这个特性,我们现在在从数学上面来看看这个问题,其实最上面的电路是可以看成是一个除法电路,在Galois域的一个除法电路。现在假设的是R(x)是寄存器中剩余的数据,M(x)是输入的码字多项式,然后数学公式可以表示成: 然后我分别计算出了M(x)的各种情况,

然后我们单独进行一下7次方的运算 发现7次方的运算和0次的时候的余数是一样的 然后我们发现其实在上面的电路中对多项式的除法也是可以循环起来的,可以验证的是

把这个记成 上面的式子是可以循环的,然后我又想到了CRC的计算,CRC的计算也可以通过一个除法电路来实现, 假设码子多项式为 生成多项式为 那么CRC的码字为这样我们同样可以用LFSR电路来进行实现 首先对M(x)乘以一个x的r次方,然后去去除G(x),在电路上的表现就是 所以在输入码字以后还需要多输入r拍的0这样才能使最后的CRC码字数据. 同理这个电路也可以进行CRC校验,把生成的数据全部都依次输入进这个 Love is not a maybe thing. You know when you love someone.

移位寄存器及其应用(精)

移位寄存器及其应用 一、实验目的 1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2、熟悉移位寄存器的应用—实现数据的串行、并行转换和构成环形计数器。 二、原理说明 1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。按代码的移位方向可分为左移、右移和可逆移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同又可分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图8-3-3-1所示。 其中 D0、D1、D2、D3为并行输入端;Q0、Q1、Q2、Q3为并行输出端;S R为右移串行输入 C为直接无条件清零端; 端,S L为左移串行输入端;S1、S0为操作模式控制端;R CP为时钟脉冲输入端。 CC40194有5种不同操作模式:即并行送数寄存,右移(方向由Q0→Q3),左移(方向由Q3→Q0),保持及清零。 S1、S0和R C端的控制作用如表8-3-3-1。 图8-3-3-1 CC40194的逻辑符号及引脚功能 表8-3-3-1 CC40194功能表

2、移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计数器和数据的串、并行转换。 (1)环形计数器 把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位, 如图8-3-3-2所示,把输出端 Q3和右移串行输入端S R 相连接,设初始状态Q0Q1Q2Q3=1000,则在时钟脉冲作用下Q0Q1Q2Q3将依次变为0100→0010→0001→1000→……,如表10-2所示,可见它是一个具有四个有效状态的计数器,这种类型的计数器通常称为环形计数器。图8-3-3-2 电路可以由各个输出端输出在时间上有先后顺序的脉冲,因此也可作为顺序脉冲发生器。其状态表如表8-3-3-2所示。 表8-3-3-2 环形计数器状态表 图 8-3-3-2 环形计数器 如果将输出Q O与左移串行输入端S L相连接,即可达左移循环移位。 (2)实现数据串、并行转换 ①串行/并行转换器 串行/并行转换是指串行输入的数码,经转换电路之后变换成并行输出。 图8-3-3-3是用二片CC40194(74LS194)四位双向移位寄存器组成的七位串/并行数据转换电路。

8位移位寄存器的电路设计与版图实现

8位移位寄存器的电路设计与版图实现 摘要 电子设计自动化,缩写为EDA,主要是以计算机为主要工具,而Tanner EDA则是一种在计算机windows平台上完成集成电路设计的一种软件,基本包括S-Edit,T-Spice,W-Edit,L-Edit与LVS等子软件,其S-Edit以及L-Edit为常用软件,前者主要实现电路设计,后者主要针对的是已知电路的版图绘制,而T-Spice主要可实现电路图及版图的仿真,可以用Tanner EDA实现电路的设计布局以及版图实现等一系列完整过程。本文用Tanner EDA工具主要设计的是8位移位寄存器,移位寄存器主要是用来实现数据的并行和串行之间的转换以及对数据进行运算或专业处理的工具,主要结构构成是触发器,触发器是具有储存功能的,可以用来储存多进制代码,一般N 位寄存器就是由N个触发器构成,移位寄存器工作原理主要是数据在其脉冲的作用下实现左移或者右移的效果,输入输出的方式表现为串行及并行自由组合,本设计就是在Tanner EDA的软件平台上进行对8位移位寄存器的电路设计仿真,再根据电路图在专门的L-Edit 平台上完成此电路的版图实现,直至完成的结果和预期结果保持一致。 关键词:Tanner EDA;L-Edit;移位寄存器,S-Edit

8 bits shift register circuit design and layout Abstract Electronic design automation,referred to as EDA,it is based on computers as the main tool,and Tanner EDA is a kind of software that complete the integrated circuit design on Windows platforms.Its Sub-Softwares include S-Edit,T-Spice,W-Edit,L-Edit and LVS and so on.S-Edit and L-Edit are commonly used software,S-Edit is primarily designed to achieve circuit,the latter is aimed primarily known circuit layout drawing,T-Spice can achieve schematic and layout simulation.We can achieve layout of the circuit design and a series of complete process layout used Tanner EDA tools.In this paper, Tanner EDA tools are mainly designed an 8-bit shift register.The shift register is mainly used for data conversion between parallel and serial, and the data processing tool operation or professional,its main structure is the trigger composition,flip-flop is a storage function,it can be used to store more hexadecimal code,In general N-bits register is composed of N trigger.Working principle of the shift register data under the action of the pulse, mainly the effect of the shift to the left or right,input and output of the way of serial and parallel free combination.This design is in Tanner on the EDA software platform to 8 bits shift register circuit design and simulation,then according to the circuit diagram on special L - Edit platform to complete the circuit layout implementation,until the finish is consistent with the results and expected results. Keywords:Tanner EDA;L-Edit;Shift register,S-Edit

作业参考答案级线性反馈移位寄存器在c=时可有种

第二章作业参考答案1.3级线性反馈移位寄存器在c3=1时可有4种线性反馈函数,设其初始状态为 (a1,a2,a3)=(1,0,1),求各线性反馈函数的输出序列及周期。 解:此时线性反馈函数可表示为f(a1,a2,a3)=a1?c2a2?c1a3 当c1=0,c2=0时,f(a1,a2,a3)=a1?c2a2?c1a3=a1, 输出序列为101101…,周期=3 当c1=0,c2=1时,f(a1,a2,a3)=a1?c2a2?c1a3=a1?a2, …,周期=7 当c1=1,c2=0时,f(a1,a2,a3)=a1?c2a2?c1a3=a1?a3, …,周期=7 当c1=1,c2=1时,f(a1,a2,a3)=a1?c2a2?c1a3=a1?a2?a3, 有输出序列为1010…,周期=2 2.设n级线性反馈移位寄存器的特征多项式为p(x),初始状态为(a1,a2,…,a n-1,a n)=(00…01),证明输出序列的周期等于p(x)的阶 证:设p(x)的阶为p,由定理2-3,由r|p,所以r?p 设A(x)为序列{a i}的生成函数,并设序列{a i}的周期为r,则显然有A(x)p(x)=?(x) 又A(x)=a1+a2x+…+a r x r-1+x r(a1+a2x+…+a r x r-1)+(x r)2(a1+a2x+…+a r x r-1)+… =a1+a2x+…+a r x r-1/(1-x r)=a1+a2x+…+a r x r-1/(x r-1) 于是A(x)=(a1+a2x+…+a r x r-1)/(x r-1)=?(x)/p(x) 又(a1,a2,…,a n-1,a n)=(00…01) 所以p(x)(a n x n-1+…+a r x r-1)=?(x)(x r-1)即p(x)x n-1(a n+…+a r x r-n)=?(x)(x r-1) 由于x n-1不能整除x r-1,所以必有x n-1|?(x),而?(x)的次数小于n,所以必有?(x)=x n-1 所以必有p(x)|(x r-1),由p(x)的阶的定义知,阶p?r 综上所述:p=r# 3.设n=4,f(a1,a2,a3,a4)=a1?a4?1?a2a3,初始状态为(a1,a2,a3,a4)=(1,1,0,1),求此非线性反馈移位寄存器的输出序列及周期。 解:由反馈函数和初始状态得状态输出表为 (a4 a3 a2 a1)输出(a4 a3 a2 a1)输出 1011111111 1101101111 1110010111(回到初始状态) 所以此反馈序列输出为:11011…周期为5 4.设密钥流是由m=2s级LFSR产生,其前m+2个比特是(01)s+1,即s+1个01。问第m+3个比特有无可能是1,为什么? 解:不能是1。 可通过状态考察的方法证明以上结论。 首先m级LFSR的状态是一个m维的向量,则前m个比特构成一个状态S0,可表示为(01)s, 第m+1个比特是0,所以S0的下一个状态是S1=(10)s, 第m+2个比特是1,所以S1的下一个状态是S2=(01)s=S0,回到状态S0, 所以下一个状态应是S3=S1=(10)s,也即第m+3个比特应该为0。 5.设密钥流是由n级LFSR产生,其周期为2n-1,i是任一正整数,在密钥流中考虑以下比特对 (S i,S i+1),(S i+1,S i+2),…,(S i+2n-3,S i+2n-2),(S i+2n-2,S i+2n-1), 问有多少形如(S j,S j+1)=(1,1)的比特对?证明你的结论。

EDA课程设计——移位寄存器的设计与实现

河南科技大学 课程设计说明书 课程名称 EDA技术与应用 题目移位寄存器的设计与实现 学院 班级 学生姓名 指导教师 日期

EDA技术课程设计任务书 班级:姓名:学号: 设计题目:移位寄存器的设计与实现 一、设计目的 进一步巩固理论知识,培养所学理论知识在实际中的应用能力;掌握EDA设计的一般方法;熟悉一种EDA软件,掌握一般EDA系统的调试方法;利用EDA软件设计一个电子技术综合问题,培养VHDL编程、书写技术报告的能力。为以后进行工程实际问题的研究打下设计基础。 二、设计任务 根据计算机组成原理中移位寄存器的相关知识,利用VHDL语言设计了三种不同的寄存器:双向移位寄存器、串入串出(SISO)移位寄存器、串入并出(SIPO)移位寄存器。 三、设计要求 (1)通过对相应文献的收集、分析以及总结,给出相应课题的背景、意义及现状研究分析。 (2)通过课题设计,掌握计算机组成原理的分析方法和设计方法。 (3)学习按要求编写课程设计报告书,能正确阐述设计和实验结果。 (4)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相应文献以及实现,给出个人分析、设计以及实现。 四、设计时间安排 查找相关资料(1天)、设计并绘制系统原理图(2天)、编写VHDL程序(2天)、调试(2天)、编写设计报告(2天)和答辩(1天)。 五、主要参考文献 [1] 江国强编著. EDA技术与实用(第三版). 北京:电子工业出版社,2011. [2] 曹昕燕,周凤臣.EDA技术实验与课程设计.北京:清华大学出版社,2006.5 [3] 阎石主编.数字电子技术基础.北京:高等教育出版社,2003. [4] Mark Zwolinski. Digital System Design with VHDL.北京:电子工业出版社,2008 [5] Alan B. Marcovitz Introduction to logic Design.北京:电子工业出版社,2003 指导教师签字:年月日

移位寄存器的工作原理

移位寄存器的工作原理是什么? 把若干个触发器串接起来,就可以构成一个移位寄存器。由4个边沿D 触发器构成的4位移位寄存器逻辑电路如图8.8.1所示。数据从串行输入端D1输入。左边触发器的输出作为右邻触发器的数据输入。假设移位寄存器的初始状态为0000,现将数码D3D2D1D0(1101)从高位(D3)至低位依次送到D1端,经过第一个时钟脉冲后,Q0=D3。由于跟随数码D3后面的数码是D2,则经过第二个时钟脉冲后,触发器FF0的状态移入触发器FF1,而FF0变为新的状态,即Q1=D3,Q0=D2。依此类推,可得4位右向移位寄存器的状态, 如表8.8.1所示。 由表可知,输入数码依次地由低位触发器移到高位触发器,作右向移动。经过4个时钟脉冲后,4个触发器的输出状态Q3Q2Q1Q0与输入数码D3D2D1D0相对应。为了加深理解,在图8.8.2中画出了数码1101(相当于D3=1,D2=1,D1=0 ,D0=1)在寄存器中移位的波形,经过了4个时钟脉冲后,1101出现在寄存器的输出端Q 3Q2Q1Q0。这样,就可将串行输入(从D1端输入)的数码转换为并行输出(从Q3、Q2、Q1、Q0端输出)的数码。这种转换方式特别适用于将接收到的串行输入信号转换为并行输出信号,以便于打印或由计 算机处理。 在图8.8.3中还画出了第5到第8个时钟脉冲作用下,输入数码在寄存器中移位的波形(如图8.8.2所示)。由图可见,在第8个时钟脉冲作用后,数码从Q3端已全部移出寄存器。这说明存入该寄存器中的数码也可以从Q端串行输出。根据需要,可用更多的触发器组成多位移位寄存器。

除了用边沿D 触发器外,还可用其他类型的触发器来组成移位寄存器,例如,用主从JK 触发器来组成移位寄存器,其级间连接方式如图8.8.3所示。根据JK触发器的特征方程,由图8.8.3可得: FF2和FF3的接法与FF1完全相似,所以各JK 触发器均以D 触发器的功能工作,图8.8.3和图8.8.1所 示电路具有相同的功能。 双向移位寄存器: 若将图8.8.1所示电路中各触发器间的连接顺序调换一下,让右边触发器的输出作为左邻触发器的数据输入,则可构成左向移位寄存器。若再增添一些控制门,则可构成既能右移(由低位向高位)、又能左移(由高位至低位)的双向移位寄存器。图8.8.4是双向移位寄存器的一种方案,它是利用边沿D 触发器组成的,每个触发器的数据输入端D 同与或非门组成的转换控制门相连,移位方向取决于移位控制端S的状态。 当S=1时,D0=DSR,D1=Q0,即FF0的D0端与右移串行输入端DSR接通,FF1的D1端与Q0接通,在时钟脉冲CP 作用下,由DSR端输入的数据将作右向移位;反之,当S=0时,D0=Q1 ,D1=Q2,在时钟脉冲CP作用下,Q2、Q1的状态将作左向移位。同理,可以分析其他两位触发器间的移位情况。由此

实验五移位寄存器及其应用

实验五移位寄存器及其应用 一、实验目的 1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2、熟悉移位寄存器的应用—实现数据的串行、并行转换和构成环形计数器。 二、实验原理 1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又能右移的称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图10-1所示。 图10-1 CC40194的逻辑符号及引脚功能 其中 D 0、D 1 、D 2 、D 3 为并行输入端;Q 、Q 1 、Q 2 、Q 3 为并行输出端;S R 为右 移串行输入端,S L 为左移串行输入端;S 1 、S 为操作模式控制端;R C为直接无 条件清零端;CP为时钟脉冲输入端。 CC40194有5种不同操作模式:即并行送数寄存,右移(方向由Q 0→Q 3 ),左移 (方向由Q 3→Q ),保持及清零。 S 1、S 和R C端的控制作用如表10-1。

2、移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计数器和数据的串、并行转换。 (1)环形计数器 把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位, 如图10-2所示,把输出端 Q 3和右移串行输入端S R 相连接,设初始状态Q Q 1 Q 2 Q 3 =1000,则在时钟脉冲作用下Q 0Q 1 Q 2 Q 3 将依次变为0100→0010→0001→1000 →……,如表10-2所示,可见它是一个具有四个有效状态的计数器,这种类型的计数器通常称为环形计数器。图10-2 电路可以由各个输出端输出在时间上有先后顺序的脉冲,因此也可作为顺序脉冲发生器。 图 10-2环形计数器 如果将输出Q O 与左移串行输入端S L 相连接,即可达左移循环移位。 (2)实现数据串、并行转换

实验十七、移位寄存器74164的逻辑功能测 试

实验十七、移位寄存器74164的逻辑功能测 试 一、实验目的 1、掌握中规模8位移位寄存器逻辑功能。 2、认识74LS164及其引脚封装。 二、实验预习要求 1、复习有关寄存器的内容。 2、查阅74LS164及逻辑电路,熟悉其逻辑功能及引脚排 列。 三、实验设备 1、+5V直流电源 2、单次脉冲源 3、逻辑电平开关 4、DM74LS164 四、实验原理 1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中锁存的代码能够在移位脉冲的作用下一次左移和右移。既能左移又能右移称为双向移位寄存器,只需要改变左、右移的控制信号可实现双向移位要求。根据移位寄存器取存信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的8位移位寄存器,型号可为74LS164,其逻辑符号及引脚排列如图所示。 其中A、B为串行输入端;

CLR为异步清零端; QH—QA为输入端; CLK为移位脉冲输入端; 74164是一种串行输入、并行输出的器件,时钟高电平有效,没有时钟使能端,该器件用低电平复位 图1 74LS164的逻辑符号及引脚功能表其中QAO、QBO、QHO为在暂稳态输入条件建立之前QA、QB和QH相应的电平;QAN、QGN为在最近的时钟上升沿转换前QA或QG的电平,表示移一位。 移位寄存器应用很广,可构成移位寄存器型计数器;属虚脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换位并行数据,或把并行数据转换位串行数据等。 五、实验内容 1、测试74LS164的逻辑功能 按图所示接线,A、B、CLK分别接至逻辑电平显示输入端。QA—QH分别接至逻辑电平显示输出端。14脚接+5V电源、7脚接地。

(整理)实验-寄存器.

实验十一移位寄存器及其应用 一、实验目的: 1、熟悉中规模4位双向移位寄存器的逻辑功能并掌握其使用方法; 2、熟悉移位寄存器的应用典例一——构成串行累加器和环形计数器。 二、实验原理: 1、移位寄存器是一种具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又能右移的移位寄存器称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位。根据存取信息的方式不同移位寄存器可分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为74LS194或CC40194,两者功能相同, S L为左移串行输入端;S1、S0为操作模式控制端;CR为异步清零端;CP为时钟脉冲输入端。 74LS194有5种不同操作模式:并行送数寄存,右移(方向由Q3至Q0),左移(方向由Q0至Q3),保持及清零。S1、S0和CR 端的控制作用如表11-1所示。表11-1

2、移位寄存器的应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验主要研究移位寄存器用作环形计数器和串行累加器的线路连接及其原理。 (1)环形计数器 把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位,如图11-2所示,把输出端Q3和右移串行输入端S R相连接,设初始状态Q3Q2Q1Q0=1000,则在时钟脉冲的作用下Q3Q2Q1Q0将依次变为0100、0010、0001、1000-----,可见它是一个具有四个有效状态的计数器,这种类型的计数器通常称为环形计数器。图11-2电路可以由各个输出端输出在时间上有先后顺序的脉冲,因此也可作为顺序脉冲发生器。 (2)串行累加器 累加器是由移位寄存器和全加器组成的一种求和电路,它的功能是将本身寄存的数和另一个输入的数相加,并存放在累加器中。 图11-2 图11-3是由两个右向移位寄存器、一个全加器和一个进位触发器组成的串行累加器。 设开始时,被加数A=A N-1.....A O和加数B=B N-1......B O已分别存入N+1位累加数移位寄存器和加数移位寄存器。再设进位触发器D已被清零。 在第一个CP脉冲到来之前,全加器各输入、输出端的情况为:A N=A0,B N=B0,C N-1=0,S N=A0+B0+0=S0,C N=C0。 当第一个CP脉冲到来后,S0存入累加和移位寄存器的最高位,C0存入进位触发器D端,且两个移位寄存器中的内容都向右移动一位。全加器输出为S N=A1+B1+C0=S1,C N=C1。

作业参考答案3级线性反馈移位寄存器在c3=1时可有4种

1. 3级线性反馈移位寄存器在 C 3 = 1时可有4种线性反馈函数,设其初始状态为 (a i , a 2, a 3)=(1,0,1),求 各线性反馈函数的输出序列及周期。 解:此时线性反馈函数可表示为 f (a 1, a 2, a 3)= a C 2a 2 C 1 a 3 当 C 1 = 0, C 2= 0 时, f (ai, a 2, a 3)= :a 1 C 2a 2 C £3= a 1, 输出序列为 101101 …, 周期=3 当 C 1 = 0, C 2= 1 时, f (ai,a 2, a 3)= :a 1 C 2a 2 C 1 a 3= a 1 a 2, 输出序列为 0… …,周期=7 当 C 1= 1, C 2= 0 时, f (ai,a 2, a 3)= :a 1 C 2a 2 oa 3= a 1 a 3, 输出序列为 1… …,周期=7 当 C 1= 1, C 2= 1 时, f (ai,a 2, a 3)= :a 1 C 2a 2 C 1 a 3= a 1 82 a 3, 有输出序列为 1010 …, 周期=2 2. 设n 级线性反馈移位寄存器的特征多项式为 p (x ),初始状态为 (a i ,a 2,…,a n-i , a n )=(00…01),证明输 出序列的周期等于 p (x )的阶 证:设p (x )的阶为p ,由定理2-3,由r | p ,所以r p 设A (x )为序列{a 。的生成函数,并设序列{a }的周期为r ,则显然有A (x )p (x ) = (x ) 又 A (x ) = a+a 2x +…+ax +x (a 1+a 2x +…+a 「x )+( x ) (a+a 2x +…+ax )+ … r-1 r r -1 r =a 1+a 2x +…+a r x /(1- x ) = a+a 2x +…+a 「x /( x -1) 于是 A (x )=( a+a 2x +…+a r X r-1)/( x r -1) = (x )/ p (x ) 又(a 1, a 2,…,a n-1, a n )=(00 …01) 所以 p (x )( a n x +?? ?+ a r x )= (x )( x -1) 即 p (x )x (a n +…+ a 「x )= (x )( x -1) 由于x n-1不能整除x r -1,所以必有x n-1| (x ),而(x )的次数小于n ,所以必有 (x ) = x n-1 所以必有p (x ) | (x r -1),由p (x )的阶的定义知,阶 p r 综上所述:p = r # 3. 设 n = 4, f ( a, a 2, a 3, a 4)= a 1 a 4 1 a 2a 3,初始状态为(a, a 2, a 3, a 4)= (1,1,0,1),求此 非线性反馈移位 寄存器的输出序列及周期。 解: 由反馈函数和初始状态得状态输出表为 (a 4 a 3 32 a 1) 输出 ( a 4 a 3 a ? a 1) 输出 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 1 1 (回到初始状态) 所以此反馈序列输出为: 11011…周期为 5 4. 设密钥流是由 m = 2s 级LFSR 产生,其前m+2个比特是(01) s+1,g 卩s + 1个01。问第m+3个比特有无可 能是1,为什么 解:不能是1。 可通过状态考察的方法证明以上结论。 首先m 级LFSR 的状态是一个 m 维的向量,则前 m 个比特构成一个状态 S 0,可表示为(01) s , 第m + 1个比特是0,所以S c 的下一个状态是 S = (10) s , 第 耐2个比特是1,所以S 1的下一个状态是 S. = (01) s = S 0,回到状态S 0, 所以下一个状态应是 S 3=S = (10) s ,也即第m+3个比特应该为0。 5?设密钥流是由n 级LFSR 产生,其周期为2n - 1, i 是任一正整数,在密钥流中考虑以下比特对 ( S , S +1), ( S +1, S +2),…,(S +2n — 3, S i +2n - 2), ( S +2〔 2, S i+二1),

实验五移位寄存器及其应用共10页文档

实验五 移位寄存器及其应用 一、实验目的 1、掌握中规模4位双向移位寄存器逻辑功能及使用方法。 2、熟悉移位寄存器的应用 — 实现数据的串行、并行转换和构成环形计数器。 二、实验原理 1、移位寄存器是一个具有移位功能的寄存器,是指寄存器中所存的代码能够在移位脉冲的作用下依次左移或右移。既能左移又能右移的称为双向移位寄存器,只需要改变左、右移的控制信号便可实现双向移位要求。根据移位寄存器存取信息的方式不同分为:串入串出、串入并出、并入串出、并入并出四种形式。 本实验选用的4位双向通用移位寄存器,型号为CC40194或74LS194,两者功能相同,可互换使用,其逻辑符号及引脚排列如图10-1所示。 图10-1 CC40194的逻辑符号及引脚功能 其中 D 0、D 1 、D 2 、D 3为并行输入端;Q 0、Q 1、Q 2、Q 3为并行输出端;S R 为右移串行输入端,S L 为左移串行输入端;S 1、S 0 为操作模式控制端; R C 为直接无条件清零端;CP 为时钟脉冲输入端。 CC40194有5种不同操作模式:即并行送数寄存,右移(方向由Q 0→Q 3),左移(方向由Q 3→Q 0),保持及清零。 S 1、S 0和R C 端的控制作用如表10-1。 表10-1

2、移位寄存器应用很广,可构成移位寄存器型计数器;顺序脉冲发生器;串行累加器;可用作数据转换,即把串行数据转换为并行数据,或把并行数据转换为串行数据等。本实验研究移位寄存器用作环形计数器和数据的串、并行转换。 (1)环形计数器 把移位寄存器的输出反馈到它的串行输入端,就可以进行循环移位, 如图10-2所示,把输出端 Q 3和右移串行输入端S R 相连接,设初始状态 Q 0Q 1 Q 2 Q 3 =1000,则在时钟脉冲作用下Q Q 1 Q 2 Q 3 将依次变为0100→0010→0001 →1000→……,如表10-2所示,可见它是一个具有四个有效状态的计数

作业参考答案3级线性反馈移位寄存器在c3=1时可有4种

第二章作业参考答案 1.3级线性反馈移位寄存器在c3=1时可有4种线性反馈函数,设其初始状态为(a1,a2,a3)=(1,0,1),求各线性反馈函数的输出序列及周期。 解:此时线性反馈函数可表示为f(a1,a2,a3)=a1c2a2c1a3 当c1=0,c2=0时,f(a1,a2,a3)=a1c2a2c1a3=a1, 输出序列为101101…,周期=3 当c1=0,c2=1时,f(a1,a2,a3)=a1c2a2c1a3=a1a2, 输出序列为10111001011100…,周期=7 当c1=1,c2=0时,f(a1,a2,a3)=a1c2a2c1a3=a1a3, 输出序列为10100111010011…,周期=7 当c1=1,c2=1时,f(a1,a2,a3)=a1c2a2c1a3=a1a2a3, 有输出序列为1010…,周期=2 2.设n级线性反馈移位寄存器的特征多项式为p(x),初始状态为(a1,a2, …,a n-1,a n)=(00…01),证明输出序列的周期等于p(x)的阶 证:设p(x)的阶为p,由定理2-3,由r|p,所以r p 设A(x)为序列{a i}的生成函数,并设序列{a i}的周期为r,则显然有A(x)p(x)=(x) 又A(x)=a1+a2x+…+a r x r-1+x r(a1+a2x+…+a r x r-1)+(x r)2(a1+a2x+…+a r x r-1)+… =a1+a2x+…+a r x r-1/(1-x r)=a1+a2x+…+a r x r-1/(x r-1) 于是A(x)=(a1+a2x+…+a r x r-1)/(x r-1)=(x)/p(x) 又(a1,a2, …,a n-1,a n)=(00…01) 所以p(x)(a n x n-1+…+a r x r-1)=(x)(x r-1) 即p(x)x n-1(a n+…+a r x r-n)=(x)(x r-1) 由于x n-1不能整除x r-1,所以必有x n-1|(x),而(x)的次数小于n,所以必有(x)=x n-1 所以必有p(x)|(x r-1),由p(x)的阶的定义知,阶p r 综上所述:p=r # 3.设n=4,f(a1,a2,a3,a4)=a1a41a2a3,初始状态为(a1,a2,a3,a4)=(1,1,0,1),求此非线性反馈移位寄存器的输出序列及周期。 解:由反馈函数和初始状态得状态输出表为 (a4 a3 a2 a1) 输出 (a4 a3 a2 a1) 输出 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 1 1(回到初始状态) 所以此反馈序列输出为:11011…周期为5 4.设密钥流是由m=2s级LFSR产生,其前m+2个比特是(01)s+1,即s+1个01。问第m+3个比特有无可能是1,为什么? 解:不能是1。 可通过状态考察的方法证明以上结论。 首先m级LFSR的状态是一个m维的向量,则前m个比特构成一个状态S0,可表示为(01)s, 第m+1个比特是0,所以S0的下一个状态是S1=(10)s, 第m+2个比特是1,所以S1的下一个状态是S2=(01)s=S0,回到状态S0, 所以下一个状态应是S3=S1=(10)s,也即第m+3个比特应该为0。 5.设密钥流是由n级LFSR产生,其周期为2n-1,i是任一正整数,在密钥流中考虑以下比特对

计数器和移位寄存器设计仿真实验报告

实验四典型时序电路的功能测试与综合仿真报告 张智博 一.74LS290构成的24位计数器 方法:第一片74290的Q3与第二片的INB相连,R01,R02相连,INA,R91,R92悬空构成24位计数器。50Hz,5v方波电压源提供时钟信号,用白炽灯显示输出信号。 实验电路: 实验现象:

输出由000000变为000001,000010,000011,000100,001000,001001,001010,001011,001100,010001,010000,010010,010011,010100,011000,011001,011010,011011,011100,100000,100001,100010,100011,100100,最终又回到000000,实现一次进位。 二.74LS161构成的24位计数器 方法:运用多次置零法 用两片74LS161构成了24位计数器,两片计数器的时钟信号都由方波电压源提供,第一片芯片的Q3和第二片芯片的Q0通过与非门,构成两个74LS161的LOAD信号,第一片的CO接第二片的ENT,其他ENT和ENP接Vcc(5v)。输出接白炽灯。 电路图:

实验现象:以下为1—24的计数过程

三.74LS194构成的8位双向移位寄存器 方法:通过两片194级联,控制MA,MB 的值,来控制左右移动 实验电路由两片74LS194芯片构成。两个Ma 接在一起,两个Mb 接在一起,第一片的

Dr,第二片的Dl,分别通过开关接到Vcc(5v)上。第一片的Q3接到第二片的Dr,第二片的Q0接到第一片的Dl。8个输出端分别接白炽灯。 实验电路: 实验现象: 右移: 接通Ma,Dr后,D0到D7全部为0,白炽灯从00000000变为,,,,,,,,实现右移功能。

相关文档
相关文档 最新文档