EDA实验报告

时间:2024.4.30

                      




第二篇:EDA实验报告


实验报告

实验名称    Verilog数字系统设计实验 

学    院     信息工程学院     

年级班别  

学    号            

学生姓名            

指导教师             

20##年 12 月 1 日

实验一、时序逻辑

1.        功能:实现一个四输入的乘法器,即 s=a*b*c*d。流水线实现,寄存器之间仅包含一个乘法器 (注:2级流水线。每次输入有效(vld_in=1)后的第2个时钟周期输出有效(vld_out=1),并由dout输出结果)

module flowline2(clk , rst_n , vld_in , a , b , c , d , dout ,vld_out ,);

    //参数定义

    parameter      A_W    =         4;

    parameter      B_W    =         4;

    parameter      C_W    =         4;

    parameter      D_W    =         4;

    parameter      DOUT_W =        16;

    //输入信号定义

    input               clk    ;

    input               rst_n  ;

    input               vld_in ;

    input[A_W-1:0]      a      ;

    input[B_W-1:0]      b      ;

    input[C_W-1:0]      c      ;

    input[D_W-1:0]      d      ;

    //输出信号定义

    output[DOUT_W-1:0]  dout   ;

    output              vld_out;

    //输出信号reg定义

    reg   [DOUT_W-1:0]  dout   ;

    reg                 vld_out;

    reg                 vld_in_tmp;

    //中间信号定义

    reg   [DOUT_W/2-1:0]  signal1;

    reg   [DOUT_W/2-1:0]  signal2;

    //时序逻辑,把a*b和c*d的积赋值给中间信号

    always  @(posedge clk or negedge rst_n)begin

        if(rst_n==1'b0)begin

            signal1<=0;

        end

        else begin

            signal1<=a*b;

        end

    end

    always  @(posedge clk or negedge rst_n)begin

        if(rst_n==1'b0)begin

            signal2<=0;

        end

        else begin

            signal2<=c*d;

        end

    end

    //中间信号的积赋值给输出值

    always@(posedge clk or negedge rst_n)begin

        if(rst_n==1'b0)begin

            dout<=16'd0;

        end

        else begin

            dout<=signal1*signal2;

        end

    end

    //输出有效值延时

    always  @(posedge clk or negedge rst_n)begin

        if(rst_n==1'b0)begin

            vld_in_tmp<=0;

        end

        else begin

            vld_in_tmp<=vld_in;

        end

    end

    always  @(posedge clk or negedge rst_n)begin

        if(rst_n==1'b0)begin

            vld_out<=0;

        end

        else begin

            vld_out<=vld_in_tmp;

        end

    end

    endmodule

2.  设计思路:

(1) a*b和c*d的值先分别存放在寄存器signal1和signal2中

(2) signal1*signal2的值即a*b*c*d的值通过寄存器输出

(3) 由于是2级流水线,故vld_dout输出有效信号应慢vld_in一拍,故通过延时来实现

3.  电路模块:

4.       仿真结果(采用Modelsim仿真):

实验二、组合逻辑

1. 功能:实现一个四输入的乘法器,即 s=a*b*c*d。改变电路结构:优化成(a*b)*(c*d) (注:直接出结果,只有输出才用到D触发器)。即1级流水线

module flowline1(clk  , rst_n , vld_in , a , b , c , d , dout , vld_out,);

    //参数定义

    parameter      A_W    =         4;

    parameter      B_W    =         4;

    parameter      C_W    =         4;

    parameter      D_W    =         4;

    parameter      DOUT_W =        16;

    //输入信号定义

    input               clk    ;

    input               rst_n  ;

    input               vld_in ;

    input[A_W-1:0]      a      ;

    input[B_W-1:0]      b      ;

    input[C_W-1:0]      c      ;

    input[D_W-1:0]      d      ;

    //输出信号定义

    output[DOUT_W-1:0]  dout   ;

    output              vld_out;

    //输出信号reg定义

    reg   [DOUT_W-1:0]  dout   ;

    reg                 vld_out;

    //中间信号定义

    reg   [7:0]  signal1;

    reg   [7:0]  signal2;

    //组合逻辑,a或b的值一改变signal1即改变

    always@(*)begin

        signal1=a*b;

    end

    //组合逻辑,c或d的值一改变signal2即改变

    always  @(*)begin

        signal2=c*d;

    end

    //时序逻辑

    always@(posedge clk or negedge rst_n)begin

        if(rst_n==1'b0)begin

            dout<=0;

        end

        else begin

            dout<=signal1*signal2;

        end

    end

    always  @(posedge clk or negedge rst_n)begin

        if(rst_n==1'b0)begin

            vld_out<=0;

        end

        else begin

            vld_out<=vld_in;

        end

    end

    endmodule

2.  设计思路:

(1) 因为只有输出才用到寄存器,故a*b和c*d都用组合逻辑即可。

(2) 输出有效信号vld_dout需慢输入有效信号vld_in一个时钟周期

3.  模块电路:

4.       仿真结果(采用Modelsim仿真):

实验三、状态机

1.  功能:状态机有三个状态,IDLE,S1和S2。在IDLE状态,如果en=1,则跳到S1状态,否则保持不变;在S1状态时,统计en=1的次数,如果达到5次,则跳到S2状态,否则保持不变;在S2状态,统计en=1的次数,如果达到7次,则跳回到IDLE状态,否则保持不变。

module statemachine3(clk , rst_n , en , state ,);

//三个状态参数定义

parameter      IDLE         = 2'b00   ;

parameter      S1           = 2'b01   ;

parameter      S2           = 2'b10   ;

input               clk     ;

input               rst_n   ;

input               en     ;

output  [1:0]        state   ;

reg     [1:0]        state   ;

reg     [1:0]        n_state ;

reg     [3:0]        count  ;

always@(posedge clk or negedge rst_n)begin

    if(rst_n==1'b0)begin

        state<=IDLE;

    end

    else begin

        state<=n_state;

    end

end

//count在不同状态下统计en==1的次数

always@(posedge clk or negedge rst_n)begin

    if(rst_n==1'b0)begin

        count<=0;

    end

    else if(state==S1)begin

        if(count==4&&en==1)begin

            count<=0;

        end

        else if(en==1)begin

            count<=count+1;

        end

    end

    else if(state==S2)begin

        if(count==6&&en==1)begin

            count<=0;

        end

        else if(en==1)begin

            count<=count+1;

        end

    end

    else begin

         count<=0;

    end

end

//状态转换

always@(*)begin

    case(state)

        IDLE    :if(en==1)begin

                    n_state=S1;

                 end

                 else begin

                     n_state=IDLE;

                 end

        S1      :if(count==4&&en==1)begin

                    n_state=S2;

                 end

                 else begin

                     n_state=S1;

                 end

        S2    :if(count==6&&en==1)begin

                  n_state=IDLE;

               end

               else begin

                     n_state=S2;

               end

        default :n_state=IDLE;

    endcase

end

endmodule

2.  设计思路:

(1)   确定三个状态转换条件,画出状态图

(2)   采用计数器count在不同状态下进行计数

(3)   满足条件进行状态转换,根据当前状态值state转换下一状态值n_state;

(4)   在时钟上升沿来时把n_state赋值给state输出

3.       模块电路:

4.       仿真结果(采用Modelsim仿真):

更多相关推荐:
实验总结报告

实验报告专业:______姓名:______学号:______日期:______桌号:______________课程名称:模拟电子技术基础实验指导老师:成绩:________________实验名称:实验总结…

实验设计报告的各种心得体会

实训心得体会为期一周的高频电子线路实训就这样告一段落了我们通过这一周紧锣密鼓的实训我们对于通信电子电路的这门课程又有了更直观更深刻的了解首先我们在实训的第一天和第二天对于高频小信号调谐放大器场效应管谐振放大器集...

实验报告范文

心理学实验报告20xx09141109短时记忆的信息提取20xx年12月28日星期四1034摘要本次实验通过测定男女两名被试对不同长度识记数字的检查项目的再认重复Sternberg著名的短时记忆信息提取实验了解...

实验报告范本

华侨大学工学院实验报告课程名称实验项目名称学院专业班级姓名学号指导教师年月日预习报告一实验目的二实验仪器三实验原理预习报告四实验内容及步骤实验报告指导老师签名五实验原始数据时间实验报告六数据处理实验报告七实验结...

实验报告格式

2020学年第学期佛山职业技术学院食品营养与检测专业实验报告课程名称食品添加剂专业班级姓名学号所在组别同组成员实验地点实验时间实验一几种食品添加剂在果味饮料中的应用实例佛山职业技术学院食品营养与检测专业指导教师...

实验报告和总结

科技与艺术学院经管系实验报告实验名称证券投资实践实验地点10号机房实验时间20xx20xx2系部经管系专业国贸经济与贸易班级08国贸4学生姓名李文静学号Xc08510420指导老师牧云志151617

实验报告格式

实验报告课程名称物证技术学实验项目名称捺印手印样本指纹显现提取班级与班级代码074213070853实验室名称或课室法学实验教学中心专业任课教师刘红学号0925020xx20姓名康杰辉实验日期20xx年12月1...

计算方法实验报告格式20xx

一、实验总体要求1.实验报告要求用实验报告纸;2.实验报告要求手写;3.根据规定格式写实验报告,具体见第五节;4.实验报告前四项内容在上实验前写好;5.实验报告第五项在实验课上根据具体情况写;6.每节实验课下课…

实训实验报告

信息工程学院《数据库实验训练》设计报告题目:电视机库存系统班级:软件13-3班学号:姓名:日期:20##年9月一程序设计的目的和要求1.目的:本实验的目的是进一步理解线性表(链表)的逻辑结构和存储结构,进一步提…

一份关于“诚信”的实验报告作文

一份关于诚信的实验报告作文一份关于gt诚信的实验报告作文周尚辰实验目的探索诚信这一物质的性质实验器材镊子蓝色固体诚信黑色固体虚假无色汗水溶液混浊唾液溶液两根试管实验步骤1用镊子取几块黑色固体虚假放入一号试管中并...

会计实务实验报告标准格式

会计实务学生实验报告学院商学院课程名称会计实务专业班级财务管理二班姓名关琪凡学号20xx1222255郑州大学西亚斯国际学院商学院学生实验报告一实验目的及要求1实验目的通过本课程实践增强学生对理论知识的理解与记...

android实验报告模板(新)

移动互联网开发Android实验报告姓名万思学号专业指导老师张华完成日期20xx1116目录实验一Android开发环境的搭建41实验目的及要求42实验设备环境及要求43实验内容44实验步骤55实验核心代码关键...

实验报告总结范文(43篇)