数字逻辑——总线实验
总线实验
- 一、 实验目的
- 二、 实验内容
- 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描述和操作方式的基础上,理清线路逻辑和各个模块之间的联系,就可以完成本次实验。
数字逻辑——总线实验相关推荐
- logisim 快速加法器设计实验报告_数字逻辑第一次实验报告-模板n.docx
<数字电路与逻辑设计>实验报告 PAGE12 / NUMPAGES12 PAGE1 / NUMPAGES12 数字逻辑实验报告(1) 数字逻辑实验1 一.系列二进制加法器设计50% 二.小 ...
- 数字逻辑基础实验二—时序逻辑电路的设计
实验目的 (1)掌握中规模集成寄存器构成的时序逻辑电路的设计方法. (2)掌握中规模集成计数器设计N进制计数器的方法. (3)学会用时序功能器件构成综合型应用电路. 实验电路 图 2-1红绿灯电路 实 ...
- Multisim # 数字逻辑仿真实验一些基础的tips
资料 接地 GROUND 电源 VCC 单刀双掷开关 SPDT Multisim中放置与门时要求选择的A.B.C.D是什么意思? https://zhidao.baidu.com/question/5 ...
- 象棋快棋赛电子裁判计时器的设计——《数字逻辑与数字系统设计》实验大作业设计报告
数电Github资源 <数字逻辑与数字系统设计>实验大作业设计报告 实验题目 象棋快棋赛电子裁判计时器的设计 实验难度 ★★ 成员 姓名 班号 学号 1 郭茁宁 1837101 11837 ...
- 四川大学计算机学院《数字逻辑(双语)》课程资源汇总
四川大学计算机学院<数字逻辑(双语)>课程资源汇总 课程资料: 数字电子技术(第10版)英文版答案.zip. 最高分实验报告: 第三章实验报告 实现布尔表达式-四川大学数字逻辑高分实验报告 ...
- 数字逻辑课程设计拔河游戏机
<数字逻辑> 课 程 设 计 报 告 题目:拔河游戏机 专业:计算机科学与技术 班级:14计科2班 组长:张钦颖(1414080901218) 成员:无 ...
- ldar是什么意思 计算机组成,第一章TEC-9计算机组成和数字逻辑实验系统介绍….PDF...
第一章TEC-9计算机组成和数字逻辑实验系统介绍-.PDF 目 录 第一章 TEC-9 计算机组成和数字逻辑实验系统介绍----------------------.2 一.TEC-9 实验系统的特点 ...
- logisim 快速加法器设计实验报告_华中科技大学数字逻辑实验
华中科技大学数字逻辑实验 数字逻辑实验报告(1)数字逻辑实验1一.系列二进制加法器设计50二.小型实验室门禁系统设计50总成绩评语(包含预习报告内容.实验过程.实验结果及分析)教师签名姓 名 学 号 ...
- 数字逻辑与数字系统设计实验大作业——4位密码锁
课程名称:数字逻辑与数字系统设计 任课教师:李琼 作业题目:4位电子密码锁 完成人:HIT的柯小信 报告日期:2020年 12月 13日 设计要求 计一个开锁密码至少为4位数字(或更多)的密码锁. 当 ...
最新文章
- 记录一次自己清理数据的过程
- 第九课.朴素贝叶斯分类器
- 为什么升级不了android版本,为啥你的手机无法升级到安卓7.0?原因都在这里!...
- 继注册版权之后又将白皮书上传学术资料库,澳本聪为何这么执着?
- 赞!这样构建微服务架构,实在是太轻松了!
- Python的基础语法(二)
- 最常见的208道Java最新面试题及答案(一)
- 【新华网】阿里与重庆9所高校合作 加快大数据人才培养
- iOS8中添加的extensions总结(一)——今日扩展
- 巩固——React的详细安装教程
- 广告点击率模型中,LR, GBDT+LR, FM, DNN等模型的优点和缺点?实际效果如何?
- 30 道 MySQL 基础知识
- 一文讲解5G、互联网、物联网、大数据、人工智能的关系
- Java基础之面向切面编程@Aspect
- C/C++音乐播放(亲测有效)
- IaaS PaaS SaaS DaaS基础设施即服务、平台即服务、软件即服务、数据即服务详解
- 手工创建Oracle11g完整版(超详细)
- 【编程实践】什么是计算机编程?定义软件开发。What is Computer Programming? Defining Software Development.
- iOS14 YYAnimatedImageView图片不显示,多数用在YYLabel的富文本中添加的图片
- redis 集群 哨兵