综合时序电路设计

本文介绍了如何使用HDL设计一个8位序列发生器,根据学号尾数生成BCD码,并详细阐述了如何设计一个序列检测器,用于识别特定的4位检测码。通过实例演示和原理解析,帮助读者掌握小型数字系统设计中的序列生成与检测技术。
摘要由CSDN通过智能技术生成

一、实验目的:

        基本掌握小型数字系统设计;

        掌握序列发生器、序列检测器的设计方法。

二、实验任务:

        设计序列发生器、序列检测器。

三、实验要求:

        1.HDL设计序列发生器,产生一个8位的序列信号,序列码:1010+学号末位数(0)的BCD码。

        2.HDL设计序列检测器

                a)要求电路对串行输入序列进行检测,当连续检测到4个码元符合检测器的检测码(如:1101)时,检测器输出为1

                b)对串行输入序列101110101101101001011进行检测,记录检测结果;

                c)前一个序列的最后一个码元,不能作为本次1101序列的码元。

四、实验设计说明:

        构成序列信号发生器的方法有多种,一种比较简单、直观的方法是用计数器和数据选择器组成。例如,需要产生一个8位的序列信号,则可以用一个八进制计数器和一个81数据选择器组成。另一个比较常见的方法是采用带反馈逻辑电路的移位寄存器。如果序列信号的位数为m,移位寄存器的位数为n,则应取2n≥m。例如,若仍然要求产生一个8位的序列信号,则可以用一个3位的移位寄存器加上反馈逻辑电路构成所需的序列发生器(见下图),其对应的特征多项式为:

 

        其中,可以用异或门实现模二加运算,D触发器作为延时单元。

        序列检测器可以根据检测序列画出状态转换图,然后用移位寄存器(3位!)、时序电路设计方法设计,也可以用有限状态机实现。

五、实验步骤

        用HDL设计序列发生器


module test1(clk, rst, din, dout);
I		nput clk, rst;
output [2:0] din;
output dout;
reg dout;
reg [2:0] din;

always@(posedge clk or posedge rst)

if(rst)	//置零
begin
dout<=0;
din<=0;
end

else

begin
case(din)		//利用位宽判断序列码
0:dout<=1;
1:dout<=0;
2:dout<=1;
3:dout<=0;
4:dout<=0;
5:dout<=0;
6:dout<=0;
7:dout<=0;
endcase

din<=din+1;

end
Endmodule

        用HDL设计序列检测器


module test2(clk, rst, test, dout);
input clk, rst;
output [3:0] test;
output dout;
reg dout;
reg [3:0] test;

always@(posedge clk )

begin	//左移/右移(设置引脚决定移动方向)
test[1]<=test[0];
test[2]<=test[1];
test[3]<=test[2];
test[0]<=test[3];
test[0]=rst;	
if((test[3]==1)&&(test[2]==1)&&(test[1]==0)&&(test[0]==1))	//判断检测码
dout=1;		//检测码正确
else
dout=0;		//非检测码
end

endmodule

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值