总线实验

  • 一、 实验目的
  • 二、 实验内容
    • 1. 实验流程
    • 2. Verilog代码分析
      • (1) Design source(.v文件):
        • top.v:
        • clkdiv.v:
        • reg377.v:
        • ram2.v:
        • mux2_1.v:
        • mux4_1:
      • (2) Constraints source(.xdc文件)
      • (3) Elaborated design:
  • 三、 实验结论
  • 四、 思考与讨论
    • (一)实验感想:

一、 实验目的

系统有三个74377寄存器(U1,U2,U3),一片RAM(U4)一个2:1多路器(U5),一个4:1多路器(U6)及时钟分频电路(U0)组成。
按附图要求,用Verilog元件例化方式描述系统,并且用SW开关演示微操作:把4‘b1111存入U2,把4’b1010存入U3;以U4为暂存处,实现U2及U3寄存器内容的交换。熟悉电路图的功能并锻炼手动操作的能力。

二、 实验内容

1. 实验流程

① 根据系统描述和附图写出各个功能模块的verilog代码,即74377寄存器(将被三次调用),ram片(一次调用,用于暂时储存U2或U3的值),2-1多路器(用于输入值储存到U1),4-1多路器(用于输入U1值到U2或U3或U4),一个时钟分频电路(100MHZ的时钟信号分频为4HZ的时钟信号)
② 根据逻辑电路图分析电路功能,确定微操作的步骤:储存值到U2、U3——SW[11:8]输入值到2-1多路器U5,U5输出y2o输入到U1,U1输出LED[11:8]和q1,q1输入到4-1多路器的a端口,4-1多路器输出y=a,拨动U2使能信号对应的开关,将输入值储存到U2,然后U2en对应开关归零保持储存值。输入值储存到U3的操作过程相似。U2、U3储存值互换——在U2、U3储存值完成后,4-1多路选择器选择输出b,拨动U4的wen对应开关,将U2的值储存到U4,wen对应开关归零保持储存值。4-1多路选择器选中c,输出y=q3,即U3储存值,拨动U2使能信号对应的开关,将输入值储存到U2,然后U2en对应开关归零保持储存值。4-1多路器选择开关选择d,输出y=q4,即ram储存的U2的初始储存值,拨动U3使能信号对应的开关,将输入值储存到U3,然后U3en对应开关归零保持储存值。完成U2、U3的储存值互换。

2. Verilog代码分析

(1) Design source(.v文件):

top.v:

module top(input [14:0]SW,output [15:0]LED,input CLK100MHZ);wire clk1_4hz;wire [3:0]yout,y2o,q1,q2,q3,q4;//时钟分频电路clkdiv U0(.mclk(CLK100MHZ),.clk1_4hz(clk1_4hz));//寄存器 reg377 U1(.en(SW[7]),.d(y2o),.q(q1),.clk(clk1_4hz));reg377 U2(.en(SW[6]),.d(yout),.q(q2),.clk(clk1_4hz));reg377 U3(.en(SW[5]),.d(yout),.q(q3),.clk(clk1_4hz));//ramram2 U4(.wen(SW[0]),.din(yout),.qout(q4),.clk(clk1_4hz),.addr(SW[4:1]));//2-1多路选择器mux2_1 U5(.sel(SW[12]),.a(SW[11:8]),.b(yout),.y(y2o));//4-1多路选择器mux4_1 U6(.sel(SW[14:13]),.a(q1),.b(q2),.c(q3),.d(q4),.y(yout));//LEDassign LED[3:0]=q2;assign LED[7:4]=q3;assign LED[11:8]=q1;assign LED[15:12]=q4;
endmodule

clkdiv.v:

module clkdiv(input mclk,output clk1_4hz);reg [27:0]q;always@(posedge mclk)q<=q+1;assign clk1_4hz=q[24];
endmodule

reg377.v:

module reg377(input  en,input [3:0]d,input  clk,output reg [3:0]q);always@(posedge clk)beginif(!en)q<=q;elseq<=d;end
endmodule

ram2.v:

module ram2(input clk,input wen,input [3:0] addr,input [3:0] din,output [3:0] qout);reg[3:0]ram[0:15];always@(posedge clk)if(wen)ram[addr]<=din;assign qout=ram[addr];
endmodule

mux2_1.v:

module mux2_1(input sel,input [3:0]a,input [3:0]b,output reg [3:0]y);always@(*)beginif(sel)y<=a;elsey<=b;end
endmodule

mux4_1:

module mux4_1(input [1:0]sel,input [3:0]a,input [3:0]b,input [3:0]c,input [3:0]d,output reg [3:0]y);always@(*)begincase(sel)2'b00: y<=a;2'b01: y<=b;2'b10: y<=c;2'b11: y<=d;endcaseend
endmodule

.v分析:
① 根据总线实验的电路图,写出各功能模块的verilog代码,并增加一个top.v文件调用各子模块,各端口与附图中的端口一致。
② top.v文件里input15位SW向量代表开关,output16位向量LED代表U1,U2,U3,U4的输出/储存值。调用7个并行的子模块。
③ 时钟分频电路利用二进制计数器原理。
④ 寄存器74377在时钟上升沿时,若使能信号为1则输出=输入,若使能信号为0,则保持上一组状态。
⑤ Ram输入时钟信号,储存地址,输入值,允许输入的标志wen,输出值。本次实验中储存地址值不用变更。在时钟上升沿,wen信号为1时,ram储存输入值,并输入对应地址的值。
⑥ 2:1多路器和4:1多路器用case语句实现选择。

(2) Constraints source(.xdc文件)

## Clock signal
set_property -dict { PACKAGE_PIN E3    IOSTANDARD LVCMOS33 } [get_ports { CLK100MHZ }]; #IO_L12P_T1_MRCC_35 Sch=clk100mhz
create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports {CLK100MHZ}];##Switchesset_property -dict { PACKAGE_PIN J15   IOSTANDARD LVCMOS33 } [get_ports { SW[0] }]; #IO_L24N_T3_RS0_15 Sch=sw[0]
set_property -dict { PACKAGE_PIN L16   IOSTANDARD LVCMOS33 } [get_ports { SW[1] }]; #IO_L3N_T0_DQS_EMCCLK_14 Sch=sw[1]
set_property -dict { PACKAGE_PIN M13   IOSTANDARD LVCMOS33 } [get_ports { SW[2] }]; #IO_L6N_T0_D08_VREF_14 Sch=sw[2]
set_property -dict { PACKAGE_PIN R15   IOSTANDARD LVCMOS33 } [get_ports { SW[3] }]; #IO_L13N_T2_MRCC_14 Sch=sw[3]
set_property -dict { PACKAGE_PIN R17   IOSTANDARD LVCMOS33 } [get_ports { SW[4] }]; #IO_L12N_T1_MRCC_14 Sch=sw[4]
set_property -dict { PACKAGE_PIN T18   IOSTANDARD LVCMOS33 } [get_ports { SW[5] }]; #IO_L7N_T1_D10_14 Sch=sw[5]
set_property -dict { PACKAGE_PIN U18   IOSTANDARD LVCMOS33 } [get_ports { SW[6] }]; #IO_L17N_T2_A13_D29_14 Sch=sw[6]
set_property -dict { PACKAGE_PIN R13   IOSTANDARD LVCMOS33 } [get_ports { SW[7] }]; #IO_L5N_T0_D07_14 Sch=sw[7]
set_property -dict { PACKAGE_PIN T8    IOSTANDARD LVCMOS18 } [get_ports { SW[8] }]; #IO_L24N_T3_34 Sch=sw[8]
set_property -dict { PACKAGE_PIN U8    IOSTANDARD LVCMOS18 } [get_ports { SW[9] }]; #IO_25_34 Sch=sw[9]
set_property -dict { PACKAGE_PIN R16   IOSTANDARD LVCMOS33 } [get_ports { SW[10] }]; #IO_L15P_T2_DQS_RDWR_B_14 Sch=sw[10]
set_property -dict { PACKAGE_PIN T13   IOSTANDARD LVCMOS33 } [get_ports { SW[11] }]; #IO_L23P_T3_A03_D19_14 Sch=sw[11]
set_property -dict { PACKAGE_PIN H6    IOSTANDARD LVCMOS33 } [get_ports { SW[12] }]; #IO_L24P_T3_35 Sch=sw[12]
set_property -dict { PACKAGE_PIN U12   IOSTANDARD LVCMOS33 } [get_ports { SW[13] }]; #IO_L20P_T3_A08_D24_14 Sch=sw[13]
set_property -dict { PACKAGE_PIN U11   IOSTANDARD LVCMOS33 } [get_ports { SW[14] }]; #IO_L19N_T3_A09_D25_VREF_14 Sch=sw[14]
#set_property -dict { PACKAGE_PIN V10   IOSTANDARD LVCMOS33 } [get_ports { SW[15] }]; #IO_L21P_T3_DQS_14 Sch=sw[15]## LEDsset_property -dict { PACKAGE_PIN H17   IOSTANDARD LVCMOS33 } [get_ports { LED[0] }]; #IO_L18P_T2_A24_15 Sch=led[0]
set_property -dict { PACKAGE_PIN K15   IOSTANDARD LVCMOS33 } [get_ports { LED[1] }]; #IO_L24P_T3_RS1_15 Sch=led[1]
set_property -dict { PACKAGE_PIN J13   IOSTANDARD LVCMOS33 } [get_ports { LED[2] }]; #IO_L17N_T2_A25_15 Sch=led[2]
set_property -dict { PACKAGE_PIN N14   IOSTANDARD LVCMOS33 } [get_ports { LED[3] }]; #IO_L8P_T1_D11_14 Sch=led[3]
set_property -dict { PACKAGE_PIN R18   IOSTANDARD LVCMOS33 } [get_ports { LED[4] }]; #IO_L7P_T1_D09_14 Sch=led[4]
set_property -dict { PACKAGE_PIN V17   IOSTANDARD LVCMOS33 } [get_ports { LED[5] }]; #IO_L18N_T2_A11_D27_14 Sch=led[5]
set_property -dict { PACKAGE_PIN U17   IOSTANDARD LVCMOS33 } [get_ports { LED[6] }]; #IO_L17P_T2_A14_D30_14 Sch=led[6]
set_property -dict { PACKAGE_PIN U16   IOSTANDARD LVCMOS33 } [get_ports { LED[7] }]; #IO_L18P_T2_A12_D28_14 Sch=led[7]
set_property -dict { PACKAGE_PIN V16   IOSTANDARD LVCMOS33 } [get_ports { LED[8] }]; #IO_L16N_T2_A15_D31_14 Sch=led[8]
set_property -dict { PACKAGE_PIN T15   IOSTANDARD LVCMOS33 } [get_ports { LED[9] }]; #IO_L14N_T2_SRCC_14 Sch=led[9]
set_property -dict { PACKAGE_PIN U14   IOSTANDARD LVCMOS33 } [get_ports { LED[10] }]; #IO_L22P_T3_A05_D21_14 Sch=led[10]
set_property -dict { PACKAGE_PIN T16   IOSTANDARD LVCMOS33 } [get_ports { LED[11] }]; #IO_L15N_T2_DQS_DOUT_CSO_B_14 Sch=led[11]
set_property -dict { PACKAGE_PIN V15   IOSTANDARD LVCMOS33 } [get_ports { LED[12] }]; #IO_L16P_T2_CSI_B_14 Sch=led[12]
set_property -dict { PACKAGE_PIN V14   IOSTANDARD LVCMOS33 } [get_ports { LED[13] }]; #IO_L22N_T3_A04_D20_14 Sch=led[13]
set_property -dict { PACKAGE_PIN V12   IOSTANDARD LVCMOS33 } [get_ports { LED[14] }]; #IO_L20N_T3_A07_D23_14 Sch=led[14]
set_property -dict { PACKAGE_PIN V11   IOSTANDARD LVCMOS33 } [get_ports { LED[15] }]; #IO_L21N_T3_DQS_A06_D22_14 Sch=led[15]

.xdc分析:
① 每个引脚两行语句:第一行代表引脚在实验板上的位置;第二行代表输入输出标准电平3.3V
② 引脚锁定文件使用到的引脚名称与design source中所使用到变量名称相对应
③ 本次实验用到时钟引脚,15位开关和所有LED灯。

(3) Elaborated design:

三、 实验结论

通过分析实验电路,我用verilog代码描述出了该系统,使用了一个顶层文件和7个子模块。并且根据电路的逻辑构造操作实验板的开关完成了两个微操作:把4‘b1111存入U2,把4’b1010存入U3;以U4为暂存处,实现U2及U3寄存器内容的交换。

四、 思考与讨论

(一)实验感想:

本次总线实验基于本学期学习的多个功能模块,在熟悉功能模块的verilog描述和操作方式的基础上,理清线路逻辑和各个模块之间的联系,就可以完成本次实验。

数字逻辑——总线实验相关推荐

  1. logisim 快速加法器设计实验报告_数字逻辑第一次实验报告-模板n.docx

    <数字电路与逻辑设计>实验报告 PAGE12 / NUMPAGES12 PAGE1 / NUMPAGES12 数字逻辑实验报告(1) 数字逻辑实验1 一.系列二进制加法器设计50% 二.小 ...

  2. 数字逻辑基础实验二—时序逻辑电路的设计

    实验目的 (1)掌握中规模集成寄存器构成的时序逻辑电路的设计方法. (2)掌握中规模集成计数器设计N进制计数器的方法. (3)学会用时序功能器件构成综合型应用电路. 实验电路 图 2-1红绿灯电路 实 ...

  3. Multisim # 数字逻辑仿真实验一些基础的tips

    资料 接地 GROUND 电源 VCC 单刀双掷开关 SPDT Multisim中放置与门时要求选择的A.B.C.D是什么意思? https://zhidao.baidu.com/question/5 ...

  4. 象棋快棋赛电子裁判计时器的设计——《数字逻辑与数字系统设计》实验大作业设计报告

    数电Github资源 <数字逻辑与数字系统设计>实验大作业设计报告 实验题目 象棋快棋赛电子裁判计时器的设计 实验难度 ★★ 成员 姓名 班号 学号 1 郭茁宁 1837101 11837 ...

  5. 四川大学计算机学院《数字逻辑(双语)》课程资源汇总

    四川大学计算机学院<数字逻辑(双语)>课程资源汇总 课程资料: 数字电子技术(第10版)英文版答案.zip. 最高分实验报告: 第三章实验报告 实现布尔表达式-四川大学数字逻辑高分实验报告 ...

  6. 数字逻辑课程设计拔河游戏机

      <数字逻辑> 课 程 设 计 报 告       题目:拔河游戏机           专业:计算机科学与技术 班级:14计科2班 组长:张钦颖(1414080901218) 成员:无 ...

  7. ldar是什么意思 计算机组成,第一章TEC-9计算机组成和数字逻辑实验系统介绍….PDF...

    第一章TEC-9计算机组成和数字逻辑实验系统介绍-.PDF 目 录 第一章 TEC-9 计算机组成和数字逻辑实验系统介绍----------------------.2 一.TEC-9 实验系统的特点 ...

  8. logisim 快速加法器设计实验报告_华中科技大学数字逻辑实验

    华中科技大学数字逻辑实验 数字逻辑实验报告(1)数字逻辑实验1一.系列二进制加法器设计50二.小型实验室门禁系统设计50总成绩评语(包含预习报告内容.实验过程.实验结果及分析)教师签名姓 名 学 号 ...

  9. 数字逻辑与数字系统设计实验大作业——4位密码锁

    课程名称:数字逻辑与数字系统设计 任课教师:李琼 作业题目:4位电子密码锁 完成人:HIT的柯小信 报告日期:2020年 12月 13日 设计要求 计一个开锁密码至少为4位数字(或更多)的密码锁. 当 ...

最新文章

  1. 记录一次自己清理数据的过程
  2. 第九课.朴素贝叶斯分类器
  3. 为什么升级不了android版本,为啥你的手机无法升级到安卓7.0?原因都在这里!...
  4. 继注册版权之后又将白皮书上传学术资料库,澳本聪为何这么执着?
  5. 赞!这样构建微服务架构,实在是太轻松了!
  6. Python的基础语法(二)
  7. 最常见的208道Java最新面试题及答案(一)
  8. 【新华网】阿里与重庆9所高校合作 加快大数据人才培养
  9. iOS8中添加的extensions总结(一)——今日扩展
  10. 巩固——React的详细安装教程
  11. 广告点击率模型中,LR, GBDT+LR, FM, DNN等模型的优点和缺点?实际效果如何?
  12. 30 道 MySQL 基础知识
  13. 一文讲解5G、互联网、物联网、大数据、人工智能的关系
  14. Java基础之面向切面编程@Aspect
  15. C/C++音乐播放(亲测有效)
  16. IaaS PaaS SaaS DaaS基础设施即服务、平台即服务、软件即服务、数据即服务详解
  17. 手工创建Oracle11g完整版(超详细)
  18. 【编程实践】什么是计算机编程?定义软件开发。What is Computer Programming? Defining Software Development.
  19. iOS14 YYAnimatedImageView图片不显示,多数用在YYLabel的富文本中添加的图片
  20. redis 集群 哨兵

热门文章

  1. XML语言数据读写理解5
  2. 局部多项式插值法【LPI】的工作原理
  3. LigerUI前端技术视频教程
  4. vue css/stylus布局
  5. python定义类方法用来计算整数的减法运算_详解python的二元算术运算,为什么说减法只是语法糖?...
  6. C语言 模拟计算器实现
  7. Arduino控制蜂鸣器播放音乐
  8. 一粒云磁盘扩容和组建raid
  9. 6月第1周易盾业务风控关注 | 新东方学而思等15家机构被顶格罚款
  10. 微信小程序--顶部状态栏切换