HNU电路电子学实验二

这篇具有很好参考价值的文章主要介绍了HNU电路电子学实验二。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的

1.了解简易模型机的内部结构和工作原理。

2.熟悉译码器、运算器的工作原理。

3.分析模型机的功能,设计指令译码器。

4.分析模型机的功能,设计 ALU。

二、实验内容

  1. 用 VERILOG 语言设计指令译码器;

  1. 用 VERILOG 语言设计ALU。

三、实验过程

1、指令译码器

A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

步骤:左上角file->New Project Wizard->选择工程位置和工程名->选择芯片 Cyclone II, availabledevice 中选择 EP2C5T144C8->点击 next->最后点击 finish 完成创建工程

工程创建图:

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档
  1. 编写源代码

根据实验指导和要求实现的功能写出对应的 Verilog 代码。

步骤:左上角 file->new->Verilog hdlfile->编写代码(模块名需与工程名一致)->编译成功后保存到工程文件中

module ins_decode (
        input en,
        input [7:0] ir,
        output reg mova,
        output reg movb,
        output reg movc,
        output reg add,
        output reg sub,
        output reg and1,
        output reg not1,
        output reg rsr,
        output reg rsl,
        output reg jmp,
        output reg jz,
        output reg jc,
        output reg in1,
        output reg out1,
        output reg nop,
        output reg halt
    );

    // parameter MOV = 4'b1100,ADD = 4'b1001,SUB = 4'b0110,AND = 4'b1011,NOT = 4'b0101,RSR = 4'b1010,JMP = 4'b0011,IN = 4'b0010,OUT = 4'b0100,NOP = 4'b0111,HALT = 4'b1000;

    always @(*) begin
        {mova,movb,movc,add,sub,and1,not1,rsr,rsl,jmp,jz,jc,in1,out1,nop,halt} = 0;
        if (en) begin
            case(ir[7:4])
                4'b1100: begin
                    if (ir[3] & ir[2])
                        movb = 1'b1;
                    else if (ir[1] & ir[0])
                        movc = 1'b1;
                    else
                        mova = 1'b1;
                end
                4'b1001:
                    add = 1'b1;
                4'b0110:
                    sub = 1'b1;
                4'b1011:
                    and1 = 1'b1;
                4'b0101:
                    not1 = 1'b1;
                4'b1010: begin
                    if (ir[1] & ir[0])
                        rsl = 1'b1;
                    else
                        rsr = 1'b1;
                end
                4'b0011: begin
                    jc  = ir[1];
                    jz  = ir[0];
                    jmp = !ir[1] && !ir[0];
                end
                4'b0010:
                    in1 = 1'b1;
                4'b0100:
                    out1 = 1'b1;
                4'b0111:
                    nop = 1'b1;
                4'b1000:
                    halt = 1'b1;
                default:
                    ;
            endcase
        end
    end
endmodule

代码图:

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档
  1. 编译与调试(包含编译调试过程中的错误﹑警告信息以及资源消耗)

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档

  1. RTL 视图

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档

视图分析及结论:

分析:由视图可得,视图左边为输入,右边为输出。其中连接有一系列的元器件。比如比较器:当输入相等时输出 1,不相等时输出 0;还有大部分的 2-1 选择器构成,当控制信号为 0 时,输出第一位,控制信号为 1 时,输出第二位。图中输入信号为 ir 和 en,输出信号包括 add 等 16 种情况。各个输出端口之间通过导线相连。

结论:一个功能的实现需要经过多重门的处理后才能实现,一个元件的内部原理结构图十分复杂。

D)功能仿真模型

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档

结果分析及结论:

分析:功能仿真是指不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证。由仿真波形可得,对于输入状态的变化,输出结果实时变化,没有延迟,其结果与电路设计的真值表的结果相对应。

当 en 为 0 时,不管 ir 为何值,16 个输出全为 0当 en 为 1 时:

当 ir=11000000 时,mova 输出为 1;当 ir=11001100 时,movb 输出为 1;当 ir=11000011 时,movc 输出为 1;当 ir=10010000 时,add 输出为 1;当 ir=01100000 时,sub 输出为 1;当 ir=10110000 时,and1 输出为 1;当 ir=01010000 时,not1 输出为 1;当 ir=10100000 时,rsr 输出为 1;当 ir=10100011 时,rsl 输出为 1;当 ir=00110000 时,jmp 输出为 1;当 ir=00110001 时,jz 输出为 1; 当 ir=00110010 时,jc 输出为 1; 当 ir=00100000 时,in1 输出为 1;当 ir=01000000 时,out1 输出为 1;当 ir=01110000 时,nop 输出为 1;当 ir=10000000 时,halt 输出为 1;

结论:功能仿真操作简单,能体现和验证实验的功能,但忽略延迟的影响会使结果与实际结

果有一定误差。

E)时序仿真

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档

结果分析及结论:

分析:时序仿真是指在布线后进行,是最接近真实器件运行的仿真,它与特定的器件有关,又包含了器件和布线的延时信息。由波形可得,当输入状态发生改变时,输出结果并未同时改变,而是有一定延迟,同时由于输入状态的改变,导致电路出现“冒险”,导致输出结果并未与预期结果相同。

结论:时序仿真可以用来验证程序在目标器件中的时序关系。同时考虑了器件的延迟后,其输出结果跟接近实际情况,但是考虑的情况过多,不容易操作,容易产生错误。时序仿真不仅反应出输出和输入的逻辑关系,同时还计算了时间的延时信息,是与实际系统更接近的一种仿真结果。不过,要注意的是,这个时间延时是仿真软件“估算”出来的。

  1. 时序分析

操作方法是:编译后,在 compilation report 中选择【timing analysis】-【summary】-

【tpd】

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档
HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档

Timing Analyzer Summmary图

Tpd 图

结果分析及结论:

分析:由图可得,Timing Analyzer Summmary 总结所有经典定时分析的结果,并报告每个定时特性的最坏情况定时。比如从 ir[3]到 jmp的最坏定时情况的 tpd 为 11.720ns。下面的tpd 报告表则给出了源节点和目标节点之间的 tpd 延迟时间,比如第二行中 ir[5]到 add 的 tpd 为 11.699ns。

结论:实际连接图中个元器件连接之间是存在时间延迟的,而且不同的元器件之间的时间延迟也不相同。

2.算术单元ALU

A)创建工程(选择的芯片为 Cyclone II;name= EP2C5T144C8)步骤同指令译码器

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档
module alu(
        input  m,
        input [3:0]s,
        input [7:0]a,
        input [7:0]b,
        output reg cf,
        output reg zf,
        output reg [7:0]t
    );
    reg[8:0] temp;
    always @(*) begin
        zf=1'b0;
        cf=1'b0;
        temp=9'b000000000;
        if(m==1'b1)    begin
            if(s[3:0]==4'b1001) begin
                t=a+b;
                temp=a+b;
                if(temp[8]==1'b1)
                    cf=1;
                else
                    cf=0;
                if(t==8'b00000000)
                    zf=1;
                else
                    zf=0;
            end
            else if(s[3:0]==4'b0110) begin
                t=b-a;
                temp=b-a;
                if(temp[8]==1'b0)
                    cf=0;
                else
                    cf=1;
                if(t==8'b00000000)
                    zf=1;
                else
                    zf=0;
            end
            else if(s[3:0]==4'b1011)
                t=a&b;
            else if(s[3:0]==4'b0101)
                t=~b;
            else if(s[3:0]==4'b0100||s[3:0]==4'b1010)
                t=b;
            else
                t=8'bxxxxxxxx;
        end
        else if(m==1'b0&&s[3:0]==4'b1100)
            t=a;
        else
            t=8'bxxxxxxxx;
    end
endmodule

步骤同指令译码器

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档
  1. 编译与调试(包含编译调试过程中的错误、警告信息以及资源消耗)

步骤同指令译码器

资源消耗:

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档
  1. RTL 视图

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档

结果分析及结论:

分析:由视图可得,视图左边为输入,右边为输出。其中连接有一系列的元器件。比如比较器:当输入相等时输出 1,不相等时输出 0;还有大部分的 2-1 选择器构成,当控制信号为 0 时,输出第一位,控制信号为 1 时,输出第二位。图中输入信号为 m,s,a,b,输出信号为 t,cf,zf。各个输出端口之间通过导线相连。

结论:一个功能的实现需要经过多重门的处理后才能实现,一个元件的内部原理结构图十分复杂。

D)功能仿真波形

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档

功能仿真波形图

结果分析及结论:

分析:功能仿真是指不考虑器件延时和布线延时的理想情况下对源代码进行逻辑功能的验证。由仿真波形可得,对于输入状态的变化,输出结果实时变化,没有延迟,其结果与电路设计的真值表的结果相对应。

当控制信号m 为 1,s 为1001 时,执行 t=a+b当控制信号 m 为1,s 为 0110 时,执行 t=b-a当控制信号 m 为1,s 为 1011 时,执行 t=a&b当控制信号 m 为 1,s 为 0101 时,执行 t=~b当控制信号 m 为1,s 为 1010 时,执行 t=b 当控制信号 m 为0,s 为 1100 时,执行 t=a 有进位和借位时 cf 为1,否则为 0;

和为 0 或差为 0 时 zf 为 1,否则为0;

结论:功能仿真操作简单,能体现和验证实验的功能,但忽略延迟的影响会使结果与实际结果有一定误差。

  1. 时序仿真波形

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档

结果分析及结论:

分析:时序仿真是指在布线后进行,是最接近真实器件运行的仿真,它与特定的器件有关,又包含了器件和布线的延时信息。由波形可得,当输入状态发生改变时,输出结果并未同时改变,而是有一定延迟,同时由于输入状态的改变,导致电路出现“冒险”,导致输出结果并未与预期结果相同。

结论:时序仿真可以用来验证程序在目标器件中的时序关系。同时考虑了器件的延迟后,其输出结果跟接近实际情况,但是考虑的情况过多,不容易操作,容易产生错误。时序仿真不仅反应出输出和输入的逻辑关系,同时还计算了时间的延时信息,是与实际系统更接近的一种仿真结果。不过,要注意的是,这个时间延时是仿真软件“估算”出来的。

G)时序分析

HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档
HNU电路电子学实验二,HNU,学习方法,fpga开发,Powered by 金山文档

结果分析及结论:

分析:由图可得,Timing Analyzer Summmary 总结所有经典定时分析的结果,并报告每个定时特性的最坏情况定时。比如从 a[0]到 zf 的最坏定时情况的 tpd 为 38.50ns。下面的 tpd报告表则给出了源节点和目标节点之间的 tpd 延迟时间,比如第二行中 s[0]到 t[0]的 tpd为 29.6ns。

结论:实际连接图中个元器件连接之间是存在时间延迟的,而且不同的元器件之间的时间延迟也不相同。

四、思考题

  1. 指令译码器必须要 16 个输出吗?可否将一些输出合并,哪些可以合并,为什么?

答:不一定。jmp 和 add 可以合并起来,因为 jmp 是将 add 后的结果写入pc 中,则可以进行 add 操作后直接进行写入操作。Add 和 sub 和 and 操作可以合并,因为这三个操作类似,且输出为使能信号,故可以用一个合并使能信号来作为三个输出的共同使能信号。

  1. ALU 中的 S[3..0]控制信号是来自哪里或者说与什么信息相同?答:来自指令码 ir的前四位。

3、为何 S[3..0]等于 1100 时将输入 a 传给t,S[3..0]等于 1010 或 0100 时将输入b 传给t? S[3..0]为控制信号,当 S[3..0]输入为 1100 时,控制输出 t 等于a,S[3..0]等于 1010 或0100 时,t 等于 b,此时 alu 相当于选择器。

五、实验总结、必得体会及建议

1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。

基本了解了简易模型机的内部结构和工作原理。同时熟悉了译码器、ALU 的工作原理。学会使用 Verilog 语言编写电路。但遇到了一些困难,比如不懂使用 QuartusII 进行波形仿真。但通过上网查询相关资料和询问同学后得以解决问题,并通过分析报告发现电路中的问题。还有不懂根据实验要求的功能表输出相对应的结果,不懂使用 always 和 assign 语句等,通过上网查询资料等都得以解决。以后再遇到相关问题时,可以通过先上网查询资料,再询问老师和同学来解决。

2、对本实验内容、过程和方法的改进建议(可选项)。

希望在元件的功能表中能给出当输入除了已给出的输出情况外的输入,输出结果应该取什么。文章来源地址https://www.toymoban.com/news/detail-751751.html

到了这里,关于HNU电路电子学实验二的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自旋电子学材料与器件学习结课记录(论文)

    摘要: 自旋电子学是凝聚态领域的一个新型交叉学科,具有广阔的应用前景。它的研究将成为本世纪信息产业的基础,对未来的电子工业发展将起到举足轻重的作用:它不仅利用电荷,而且需利用电子的自旋特性,通过操纵电子自旋来进行信息处理。随着电子器件的尺寸越做

    2024年02月09日
    浏览(48)
  • 愉快的高效:通过电子学习培训客户

    让顾客和合作伙伴忠诚于您的最有效方法之一是教导他们正确使用您的产品或服务。我们不是指书面说明书-它们枯燥复杂,没有人愿意阅读。基于现代数字技术的电子学习,或培训课程,可以帮助您吸引和留住顾客。 根据Brandon Hall进行的调查,自2012年以来,超过一半的公司

    2024年04月26日
    浏览(42)
  • 【光波电子学】基于MATLAB的多模光纤模场分布的仿真分析

    (1)多模光纤的概念 多模光纤(MMF)是一种具有较大纤芯直径的光纤结构,其核心直径通常在10-50微米范围内。与单模光纤(SMF)相比,多模光纤可以容纳多个光信号模式传播,因此在许多应用中具有广泛的用途。 多模光纤的工作原理基于多个光模式在纤芯中的传播。每个

    2024年01月16日
    浏览(47)
  • 中国电子学会2023年03月份青少年软件编程Python等级考试试卷一级真题(含答案)

    2023-03 Python一级真题 分数:100   题数:37 测试时长:60min 一、单选题(共25题,共50分) 1.    在启动IDLE后,看到下列哪一个提示字符,表明已经进入Python Shell交互模式?(B )(2分) A. B.  C.^^^ D.》》》 2.    某同学想要编写程序计算三角形的面积,已知底边长为11,高为8

    2024年02月17日
    浏览(50)
  • 中国电子学会2023年05月份青少年软件编程C++等级考试试卷四级真题(含答案)

    怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。 有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友

    2024年02月10日
    浏览(51)
  • 中国电子学会2023年05月份青少年软件编程Python等级考试试卷一级真题(含答案)

    2023-05 Python一级真题 分数:100 题数:37 测试时长:60min 一、单选题(共25题,共50分) 1.  可以对Python代码进行多行注释的是?(C ) A.# B.\\\" \\\" C.\\\'\\\'\\\' \\\'\\\'\\\' D.\\\' \\\' 2.  下列可以作为Python变量名的是?( D) A.and B.an-d C.1_and D.and1 3.  下列选项中不符合Python语言变量命名规则的是?( B) A

    2024年02月15日
    浏览(43)
  • 中国电子学会2023年05月份青少年软件编程C++等级考试试卷一级真题(含答案)

    输入三个整数,把第二个输入的整数输出。 时间限制:1000 内存限制:65536 输入 只有一行,共三个整数,整数之间由一个空格分隔。整数是32位有符号整数。 输出 只有一行,一个整数,即输入的第二个整数。 样例输入 123 456 789 样例输出 456 参考答案: 计算表达式的值 给定

    2024年02月12日
    浏览(126)
  • 中国电子学会2023年03月份青少年软件编程C++等级考试试卷一级真题(含答案)

    一、编程题(共5题,共100分) 1.    字符长方形 给定一个字符,用它构造一个长为4个字符,宽为3个字符的长方形,可以参考样例输出。 时间限制:1000 内存限制:65536 输入 输入只有一行, 包含一个字符。 输出 该字符构成的长方形,长4个字符,宽3个字符。 样例输入 * 样例

    2024年02月06日
    浏览(52)
  • 中国电子学会2023年05月份青少年软件编程Python等级考试试卷三级真题(含答案)

    2023-05 Python三级真题 题数:38 分数:100 测试时长:60min 一、单选题(共25题,共50分) 1.  请选择,下面代码运行之后的结果是?(C)(2分) A.  24 B.  8 C.  程序出错! D.  程序正确! 答案解析:变量a与b都是字符串,不能进行乘法运算,所以经过异常处理之后,会打印”程序

    2024年02月14日
    浏览(51)
  • 中国电子学会2023年03月份青少年软件编程Python等级考试试卷二级真题(含答案)

    2023-03 Python二级真题 分数:100   题数:37 测试时长:60min 一、单选题(共25题,共50分) 1.    下列说法正确的是?( C)(2分) A.{123:\\\'a\\\',\\\'a\\\':123}不是一个合法的字典 B.数字、字符串、列表和元组都可以作为字典的键 C.{(12,34,\\\'a\\\'):\\\'a\\\',\\\'a\\\':5678}是一个合法的字典 D.字典中的内容一经创

    2024年02月10日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包