eda第五章作业

发布 2022-09-02 21:12:28 阅读 3883

实验**】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 由项目监理机构的专业监理工程...