实验**】testbench
timescale 10ns/1ns
module tsearcher;
reg din,clk,rst_;
wire overflow,flag;
wire [4:0]catch;
wire[3:0]state,next_state;
wire [7:0]data_out;
catch tsearcher
din(din),clk(clk),rst_(rst_),overflow(overflow),flag(flag),catch(catch),data_out(data_out)
initial
begin
din=0;
clk=0;
rst_=0;
endinitial
begin#20 rst_=1;
#400000 $stop;
endalways @(posedge clk)
din=$random;
always #2.5 clk=~clk;
endmodule
源**。// project name:searcher
// design module name
// author:heyadan
// version: 1.0
// updata time:2014/04/19
module catch(din,clk,rst_,data_out,flag,catch,overflow);
input din,clk,rst_;
output catch,overflow,data_out,flag;
reg overflow,flag;
reg [4:0]catch;
reg [3:0] state,next_state;
reg [7:0]data_out;
parameter idle=4'd0,first=4'b0001,second=4'b0010,third=4'b0011,fourth=4'b0100,fifth=4'b0101,six=4'd6,seven=4'd7,eight=4'd8;
always@(posedge clk or negedge rst_)
if(!rst_)
state<=idle;
elsestate<=next_state控制时序生成。
always@(state or din or rst_)/组合逻辑,不生成register
if(!rst_)
next_state=idle;
elsecase(state)
idle:if(din==1)next_state=first;
else next_state=idle;
first:if(din==1)next_state=second;
else next_state=idle;
second:if(din==0)next_state=third;
else next_state=first;
third:if(din==1)next_state=fourth;
else next_state=idle;
fourth:if(din==0)next_state=fifth;
else next_state=second;
fifth:if(din==1)next_state=six;
else next_state=idle;
six:if(din==1)next_state=seven;
else next_state=idle;
seven:if(din==0)next_state=eight;
else next_state=second;
eight:if(din==1)next_state=fourth;
else next_state=idle
default:next_state=idle状态转换
endcase
always@(posedge clk or negedge rst_)
if(!rst_)
catch<=5'b0;
else if(catch>16)
catch<=5'd16;
else if(state==eight)
catch<=catch+1;
else计算序列个数。
always@(posedge clk or negedge rst_)
if(!rst_)
flag<=1'd0;
else if(state==eight)
flag<=1'd1;
elseflag<=1'd0在捕捉到每个序列后产生一个1时钟周期的标记信号。
always@(posedge clk or negedge rst_)
if(!rst_)
overflow<=1'd0;
else if(catch==16)
overflow<=1'd1计数上限为16,计数满后值保持不变,产生计数满的溢出信号。
else;always@(posedge clk or negedge rst_)
if(!rst_)
data_out=8'd0;
else if(flag)
case(catch)
0:data_out=8'b00000000;
1:data_out=8'b00000001;
2:data_out=8'b00000010;
3:data_out=8'b00000011;
4:data_out=8'b00000100;
5:data_out=8'b00000101;
6:data_out=8'b00000110;
7:data_out=8'b00000111;
8:data_out=8'b00001000;
9:data_out=8'b00001001;
10:data_out=8'b00010000;
11:data_out=8'b00010001;
12:data_out=8'b00010010;
13:data_out=8'b00010011;
14:data_out=8'b00010100;
15:data_out=8'b00010101;
16:data_out=8'b00010110;
default:data_out=8'b00010110;
endcase
对捕捉到的序列个数进行输出。
endmodule
实验结果】实验结果分析】
1、捕捉***序列,在捕捉到每个序列后产生一个1时钟周期的标记信号对捕捉到的序列个数进行计数并输出,计数上限为16,计数满后值保持不变,产生计数满的溢出信号。
允许序列的嵌套。
2、端口说明:输入信号:rst_.复位信号,低电平有效。
clk,时钟信号。
din,输入数据信号。
输出信号:data_out,输出数据信号。
flag,发现序列标记信号。
catch,5位,序列个数计数信号。
overflow,溢出信号。
EDA第五章作业
5 7 用74283加法器和逻辑门设计实现一位841bcd码加法器电路,输入输出均为bcd码,ci为低位的进位信号,co为高位的进位信号,输入为两个一位十进制数a,输出用s表示。设计如下。bdf文件如下 图中输入a与b均是总线连接,输出s也是总线连接。结果如下 分析如下 图刚开始时,a 1000,b...
第五章作业
检验以下模型中是否存在多重共线性,如果存在,请改善。y 新客车 量。x2 新车的消费者 指数,1967 100 x3 消费者 指数 全部项目,全部城市消费者 1967 100 x4 个人可支配收入,10亿美元。x5 利率,百分数。x6 民间就业劳动人数 千人 一 建立模型。其中,是新客车 量 辆 分...
第五章作业
一 单选题。1 监理规划是监理单位重要的 a a 存档资料b 计划文件c 监理资料d.历史资料。2 下列说法中,符合监理规划的是 a a 由项目总监理工程师主持制定b 监理规划是开展监理工作的第一步c 监理规划是签订合同之前制定的d 监理规划相当于工程项目的初步设计。3 由项目监理机构的专业监理工程...