移位寄存器实验报告
移位寄存器实验报告

移位寄存器实验报告实验题目:移位寄存器一、实验目的了解移位寄存器的原理,掌握移位寄存器的应用。
二、实验原理移位寄存器是一种存储器件,用于将二进制数据以位为单位进行移位操作。
移位寄存器由若干个D触发器组成,每个D触发器的输出接入下一个D触发器的输入,以此类推,形成了一个环形移位结构。
移位寄存器有三种基本工作模式:串行输入并行输出(SIPO),并行输入串行输出(PISO)和并行输入并行输出(PIPO)。
在SIPO模式下,输入数据串行输入到移位寄存器的最高位,然后逐个向低位移位,最终输出到最低位。
在PISO模式下,输入数据并行输入到移位寄存器的每个位,然后逐个向高位移位,最终输出到最高位。
在PIPO模式下,输入数据并行输入到移位寄存器的每个位,然后逐个向低位移位,最终输出到每个输出端口。
移位寄存器的应用很广泛,其中最常见的是时序信号的处理。
移位寄存器可以用于数字频率合成、序列生成、编码器和解码器等方面。
三、实验设备1. 计算机2. Xilinx ISE14.6软件3. BASYS2开发板4. USB下载器四、实验步骤1. 设计移位寄存器的电路原理图并进行仿真。
2. 在Xilinx ISE14.6软件中创建工程并添加源、约束和测试文件。
3. 将电路原理图转换成Verilog HDL代码。
4. 将Verilog HDL代码综合为综合网表,并进行时序分析。
5. 将综合网表映射到BASYS2开发板上并进行状态机调试。
6. 使用USB下载器将设计好的逻辑文件下载到FPGA上。
7. 连接开发板的输入输出端口,验证移位寄存器的正确性,并观察输出端口结果。
五、实验结果与分析通过移位寄存器的实验,我们学会了如何使用Verilog HDL设计并实现移位寄存器,并对移位寄存器进行了详细的仿真、综合、映射和下载调试。
在实验过程中,我们还学会了串行输入并行输出(SIPO),并行输入串行输出(PISO)和并行输入并行输出(PIPO)三种基本工作模式,掌握了移位寄存器在数字频率合成、序列生成、编码器和解码器等领域中的使用方法。
移位寄存器及其应用实验报告

移位寄存器及其应用实验报告1. 背景在数字电路中,移位寄存器是一种常见的基本电路元件。
它可以将输入数据按照一定规则进行移位操作,并输出处理后的数据。
移位寄存器通常由触发器构成,分为串行移位寄存器和并行移位寄存器。
在实际应用中,移位寄存器常用于数据存储、数据传输、脉冲发生器等方面。
本实验旨在通过设计移位寄存器电路及其应用电路的实验,加深对移位寄存器工作原理的理解,掌握其应用。
2. 实验目的1.了解移位寄存器的基本原理;2.学会设计移位寄存器电路及其应用电路;3.掌握移位寄存器的应用方法。
3. 实验原理与方法3.1 移位寄存器原理移位寄存器将输入数据按照一定规则进行移位操作,并输出处理后的数据。
常见的移位规则包括:左移、右移、循环左移、循环右移等。
移位寄存器通常由触发器构成,触发器的状态决定了寄存器中存储的数据。
本实验主要探究两种常用的移位寄存器:串行移位寄存器和并行移位寄存器。
3.1.1 串行移位寄存器串行移位寄存器中,数据是按照位的顺序逐个进行移位的。
串行移位寄存器可以通过级联多个D触发器实现,每个D触发器的输出与下一个D触发器的输入相连。
3.1.2 并行移位寄存器并行移位寄存器中,数据的位同时进行移位。
并行移位寄存器可以通过级联多个D 触发器实现,每个D触发器的输入都与移位数据的对应位相连。
3.2 实验所用材料与方法3.2.1 材料•移位寄存器芯片•发光二极管(LED)•电路连接线3.2.2 方法1.实验预备:准备实验所需的移位寄存器芯片、LED和电路连接线。
2.按照移位寄存器原理,设计移位寄存器电路并进行布线连接。
3.使用示波器检查电路的正确性。
4.进行实验验证,观察移位寄存器的运行情况,并记录实验结果。
4. 实验结果与分析本实验设计了一个4位串行移位寄存器电路,并进行了验证实验。
首先,按照原理部分的描述,我们选择了一个基于D触发器的4位串行移位寄存器芯片。
通过连接四个D触发器,将其串联起来,即可构成一个4位的串行移位寄存器。
移位寄存器实验报告结果

一、实验目的本次实验的主要目的是通过搭建移位寄存器实验电路,验证移位寄存器的逻辑功能,并了解其在数字系统中的应用。
实验内容包括:移位寄存器的基本原理、实验电路搭建、实验现象观察和结果分析。
二、实验原理移位寄存器是一种具有移位功能的寄存器,它可以实现数据的串行输入和串行输出。
在时钟脉冲的作用下,移位寄存器中的数据可以依次左移或右移。
根据移位寄存器存取信息的方式不同,可分为串入串出、串入并出、并入串出、并入并出四种形式。
本实验选用的是4位双向通用移位寄存器,型号为74LS194或CC40194。
74LS194具有5种不同操作模式:即并行送数寄存、右移、左移、保持及清零。
其逻辑符号及引脚排列如图1所示。
图1 74LS194的逻辑符号及其引脚排列三、实验电路搭建1. 电路元件准备:74LS194芯片、电阻、电容、二极管、连接线等。
2. 电路搭建:按照图1所示,将74LS194芯片的引脚与电阻、电容、二极管等元件连接,形成移位寄存器实验电路。
3. 电源连接:将电源正负极分别连接到电路板上的VCC和GND端。
四、实验现象观察1. 实验现象一:串行输入,并行输出。
(1)将74LS194的SR端接地,SL端接高电平,S1、S0端接高电平,CR端接地。
(2)使用串行输入端输入数据,观察并行输出端的数据变化。
(3)实验现象:当输入串行数据时,并行输出端依次输出对应的数据。
2. 实验现象二:并行输入,串行输出。
(1)将74LS194的SR端接地,SL端接高电平,S1、S0端接低电平,CR端接地。
(2)使用并行输入端输入数据,观察串行输出端的数据变化。
(3)实验现象:当输入并行数据时,串行输出端依次输出对应的数据。
3. 实验现象三:左移、右移操作。
(1)将74LS194的SR端接地,SL端接高电平,S1、S0端分别接高电平和低电平,CR端接地。
(2)观察移位寄存器中的数据在时钟脉冲的作用下左移或右移。
(3)实验现象:在时钟脉冲的作用下,移位寄存器中的数据依次左移或右移。
同步移位寄存器实训报告

一、实训目的1. 理解同步移位寄存器的概念和原理。
2. 掌握74LS194移位寄存器的逻辑功能和使用方法。
3. 熟悉移位寄存器在实际电路中的应用。
4. 提高动手实践能力和电路设计能力。
二、实训原理同步移位寄存器是一种具有同步时序的数字电路,它可以将输入的数据以串行或并行的形式存储在寄存器中,并在时钟脉冲的作用下实现数据的移位。
同步移位寄存器具有以下特点:1. 同步时序:所有触发器在同一个时钟脉冲的作用下同时动作。
2. 移位方向:数据可以左移或右移。
3. 数据输入/输出方式:串行输入/串行输出、串行输入/并行输出、并行输入/串行输出、并行输入/并行输出。
74LS194是一种典型的4位双向移位寄存器,它具有以下功能:1. 右移:串行数据从SA输入,同时向右移位。
2. 左移:串行数据从SD输入,同时向左移位。
3. 并行输入:并行数据从d、c、b、a输入。
4. 保持:输出不变。
三、实训器材1. 74LS194移位寄存器芯片1片2. 74LS00门电路芯片1片3. 74LS20反相器芯片1片4. 74LS273锁存器芯片1片5. 电阻、电容、二极管、LED灯等元器件6. 逻辑电平转换器7. 信号发生器8. 示波器9. 数字万用表10. 实验板、连接线等四、实训内容1. 74LS194移位寄存器功能测试(1)测试目的:验证74LS194移位寄存器的逻辑功能。
(2)测试步骤:1. 将74LS194的输入端SD、SA、d、c、b、a连接到逻辑电平转换器,输出端Q0、Q1、Q2、Q3连接到LED灯。
2. 使用信号发生器产生时钟脉冲,连接到74LS194的时钟端CP。
3. 分别测试74LS194的右移、左移、并行输入和保持功能。
4. 观察LED灯的显示情况,验证74LS194的逻辑功能。
2. 74LS194移位寄存器应用电路设计(1)设计目的:设计一个基于74LS194的4位二进制计数器。
(2)设计步骤:1. 分析计数器的要求,确定计数器的位数和计数范围。
数电实验报告 移位寄存器功能测试及设计

实验报告实验六移位寄存器功能测试及设计2.6.1实验目的(1)掌握移位寄存器的工作原理与逻辑功能。
(2)掌握集成移位寄存器74LS74的逻辑功能及应用。
2.6.2实验仪器设备与主要器件实验箱一个;双踪示波器一台;稳压电源一台;函数发生器一台。
74LS74两块;74LS194两块;74LS283两块。
2.6.3实验原理1.双向移位寄存器双向移位寄存器是指在控制信号作用下,既能左移又能右移的多功能移位寄存器。
此外它还有并行输入置数、保持和异步清零等功能。
74LS194是一个典型的4位双向移位寄存器,其中,Rd为异步清零输入端,S1、S0为工作方式选择端。
D0、D1、D2、D3是数据输入端,Q0、Q1、Q2、Q3为并行数据输出端,D1L、D1R分别为左移、右移数据输出端,CP上升沿触发。
2.双向移位寄存器74LS194的应用(1)形成计数器电路,其中D1R=Q3。
0000——1000——1100——1110——1111——0111——0011——0001——0000(2)组成模12计数器电路。
000000——100000——110000——111000——111110——111111——011111——001111——000111——000011——000001——000000。
(3)形成并串转换电路。
2.6.4实验内容(2)如简图2-6-6所示,两个二进制数A(a0a1a2a3)、B(b0b1b2b3)分别存入74LS194(A)、74LS194(B),然后对它们按位相加,其和放入74LS1949(A)的移位输入中。
试才用全加器74LS283和D触发器74LS74组成能实现上述功能的电路,在74LS194(A)输出端Q0、Q1、Q2、Q3用发光二极管指示。
完善图2-6-6并依此图线调试电路,以表格的形式记录四个脉冲后的结果。
cp S0S1 B A Q0 1 0 0010 0011 00111 1 0 1001 1001 10012 1 0 1100 0100 01003 1 0 1110 1010 10104 1 0 1111 0101 0101(3)按单向移位寄存器的电路图2-6-1接线,实现串入-并出,并入-串出两种工作方式的输出序列。
实验6移位寄存器及其应用

实验六 移位寄存器及其应用一、实验目的1、 掌握移位寄存器功能的测试方法2、 掌握4位双向移位寄存器的逻辑功能 二、实验仪器及设备1、 EEL-II 型电工电子实验台2、 集成器件74LS194 三、实验内容1、 在数字实验箱中插入74LS194,按图6.1接线V CC S 1S 0D SR A D SL B C D GNDQ A Q B Q C Q DCRCP逻辑电平显示器数 据 开 关+5v复位按钮SB单次脉冲74LS194图6.1 74LS194管脚排列图和逻辑功能测试图2、 接线完毕,检查无误后,进行基本功能测试 复位:CR =0,电路复位,Q A Q B Q C Q D =0000 保持:CR 非=1,S 1=S 0=0,Q A ~Q D 状态不变使CR =1,S 1、S 0(工作状态控制端)任意,CP=0或CP=1,则Q A ~Q D 状态也不变表6.1 74LS194双向4位移位寄存器功能表并行置数:置CR=1,S1=S0=10,数据输入端DCBA置为0101,输入单次脉冲,则Q D Q C Q B Q A=0101,如果改变DCBA数据,再按单次脉冲,新数据将置入。
右移位:置CR=1,S1=0,S0=1,D SR=1,D SL=*,输入单次脉冲,则Q A=1,Q B=Q An,Q C=Q Bn,Q D=Q Cn左移位:置CR=1,S1=1,S0=0,D SR=*,D SL=1,输入单次脉冲,则Q D=1,Q C=Q Dn,Q B=Q Cn,Q A=Q Bn3、循环右移应用如将上图中的D SR端接到Q D端,并将寄存器Q D~Q A置为1000,且满足右移条件,在寄存器会右移一个“1”,每4个时钟脉冲完成一次循环。
4、用74LS194组成8位移位寄存器原理如图6.2所示。
逻辑状态显示器图6.2 用74LS194组成8位移位寄存器原理图四、实验报告整理各项测试结果。
实验六 移位寄存器

实验六移位寄存器一:实验目的1. 掌握移位寄存器的工作原理,逻辑功能2. 掌握集成移位寄存器74LS194的逻辑功能及应用二:实验器材74LS00 74LS74 74LS194 CD4008B三:实验原理寄存器用于寄存一组二值代码,它被广泛应用于各类数字系统和计算机中,一个触发器能储存1位二值代码,N个触发器组成的寄存器能储存N位二值代码。
移位寄存器除了具有存储代码功能以外,还具有移位功能。
所谓移位功能,是指寄存器里存储的代码能在移位脉冲的作用下依次左移或右移。
因此,移位寄存器不但可以用来寄存代码,还可以用来实现数据的串行---并行转换,数值的运算和处理。
四.实验内容(一)验证74LS194的逻辑功能,按功能表进行。
结论:74LS194的逻辑功能与实验结果相一致并且与逻辑功能表相符合.二)如图6.3所示,两个二制数A,B,分别存入74LS194(A),74LS194(B),现在要对它们进行按位相加,其和放入74LS194(A)中。
试采用全加器CD4008B和D触发器74LS74组成能实现上述要求的电路,输出用二极管指示。
有图知,满足其特性。
分析以上记录的真值表可知在预设的A为 1010,B为1001情况下,芯片U1用来对A进行移位处理、存放和显示输出结果,U2用来对B进行移位,U3为全加器,本题中设置为一位全加器,故其进位应为S2,全加器将本位的输出和用来控制A右移移位进去的数字,并用D锁存器来存储A、B全加所得和向高位的进位,并将进位结果参与下一次全加运算。
分析真值表可知,每来一个脉冲,A、B实现一次移位,全加器进行一次全加,锁存器存入所得进位数。
四个脉冲到来之后,输出结果即为A、B全加二进制结果,由表中数据得出A+B=10011,符合实验结果;之后由于B已经移出去了,实现的是A 中数与0000的全加的循环移位。
(三)设计二进制转换成十进制的数码转换电路,使上述电路在相加后可以完成用数码管显示相加结果。
计算机组成原理移位寄存实验报告

计算机组成原理实验二移位寄存实验一、实验目的:1、了解移位寄存器的硬件电路,验证移位控制与寄存的组合功能。
2、利用寄存器进行数据传输。
二、实验要求:实现寄存器移位操作,了解通用寄存器的运用。
三、实验原理:移位运算实验原理图移位运算实验原理如图所示,使用了一片74LS299作为移位发生器,其八输入/输出端以排针方式和总线单元连接。
299—B信号控制其使能端,T4时序为其时钟脉冲,实验时将“W/R UNIT”中的T4接至“STATE UNIT”中的KK2单脉冲发生器,由S0、S1、M控制信号控制其功能状态,其列表如下:299—B S 1 S 0 M 功能0 0 0 任意保持0 1 0 0 循环右移0 1 0 1 带进位循环右移0 0 1 0 循环左移0 0 1 1 带进位循环左移任意 1 1 任意装数四、实验连接:1.运算器控制信号连接:S0,S1,M,LDCZY,LDR0,/SW-B,/SR-B,/R0-B2.完成连接并检查无误后接通电源。
五、实验仪器状态设定:在闪动的“P.”状态下按动“增址”命令键,使LED显示器自左向右第一位显示提示符“H”,表示本装置已进入手动单元实验状态。
五、实验项目:(一)移位寄存器置数首先置CBA=000,然后按下面流程操作:数据开关(01101011)三态门置数(01101011)三态门[CBA=001] [S0=1,S1=1] [CBA=111][ “按STEP” ](二)寄存器移位置CBA=001并输入数据,然后置CBA=111,参照实验原理中的移位寄存器控制特性表改变S0、S1、M,按动“单步”命令键,实验发现数据移位正确。
(三)移位结果寄存我们选取R0,把移位寄存器移位后的内容寄存到通用寄存器。
在移位操作后保持CBA=111,S0=0,S1=0,然后令LDR0=1,再按动“单步”命令键,完成移位结果保存。
(四)移位结果读出置CBA=100,总线指示灯显示R0内容,与上步中存的数一致。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
移位寄存器实验报告姓名:陈素学号:3120100621 专业:软件工程课程名称:逻辑与计算机设计基础实验同组学生姓名:张闻实验时间:y yyy-mm-dd 实验地点:紫金港东4-509 指导老师:一、实验目的和要求掌握移位寄存器的工作原理及设计方法掌握串、并数据转换的概念与方法了解序列信号在CPU控制器设计中的应用二、实验内容和原理2.1 实验原理带并行置入的移位寄存器移位寄存器:每来一个时钟脉冲,寄存器中的数据按顺序向左或向右移动一位必须采用主从触发器或边沿触发器不能采用电平触发器数据移动方式:左移、右移数据输入输出方式串行输入,串行输出串行输入,并行输出并行输入,串行输出串行输入的移位寄存器使用D触发器,可构成串行输入的移位寄存器2.2 标题<正文>带并行输入的右移移位寄存器数据输入移位寄存器的方式:串行输入、并行输入带并行输入的8位右移移位寄存器module shift_reg(clk, S, s_in, p_in, Q); input wire clk, S, s_in; input wire [7:0] p_in; output wire [7:0] Q; wire [7:0] D; wire nS;FD FDQ0(.C(clk), .D(D[0]), .Q(Q[0])), FDQ1(.C(clk), .D(D[1]), .Q(Q[1])), FDQ2(.C(clk), .D(D[2]), .Q(Q[2])), FDQ3(.C(clk), .D(D[3]), .Q(Q[3])), FDQ4(.C(clk), .D(D[4]), .Q(Q[4])), FDQ5(.C(clk), .D(D[5]), .Q(Q[5])), FDQ6(.C(clk), .D(D[6]), .Q(Q[6])), FDQ7(.C(clk), .D(D[7]), .Q(Q[7]));OR2 D0_L(.I0(L_0), .I1(R_0), .O(D[0])), D1_L(.I0(L_1), .I1(R_1), .O(D[1])), D2_L(.I0(L_2), .I1(R_2), .O(D[2])), D3_L(.I0(L_3), .I1(R_3), .O(D[3])), D4_L(.I0(L_4), .I1(R_4), .O(D[4])),串行输入SD5_L(.I0(L_5), .I1(R_5), .O(D[5])), D6_L(.I0(L_6), .I1(R_6), .O(D[6])), D7_L(.I0(L_7), .I1(R_7), .O(D[7]));并行-串行转换器 没有启动命令时并行-串行转换器ser_out并行输入par_in 移位输入7位并行-串行转换器ser_out并行输入par_in 移位输入7位并行-串行转换器2.1 实验内容用Verilog HDL语言,采用结构化描述方法设计一个8位带并行输入的右移移位寄存器。
编写该移位寄存器的代码模块shift_reg针对该模块,编写波形仿真输入代码进行波形仿真,并分析仿真结果是否正确设计16位带并行输入的右移移位寄存器。
2、增加到计算器模块中。
3、修改相关代码。
4、修改ucf文件。
5、下载并验证。
三、主要仪器设备必须采用编号样式,设备的数量和单位应对齐。
示范如下:1.xx开发板1套2.装有ISE的PC机1台四、操作方法与实验步骤修改TOP程序,添加移位寄存器Module top(input wire clk, input wire [7:0]btn_in, input wire[3:0]switch, output wire [11:0]anode, output wire [15:0]segment)reg [15:0] op1,op2;reg [15:0] display_num;wire [11:0] btn_out;wire [15:0] result,cnt;wire [31:0] display_num32b;wire clk_1s;wire [15:0] Q1,data_out;initial beginop1=16'b0011_0011_0011_0011;//3333op2=16'b0010_0010_0010_0010;//2222endpbdebounce p0(clk,btn_in[0],btn_out[0]);display m0(clk, display_num,anode[3:0], segment[7:0]); //display module display32bits m1(clk,display_num32b,anode[11:4],segment[15:8]); calculate_result m2(switch,op1, op2, result); //calculate resultcounter_1s m3(clk, clk_1s);couter_16reversible m4(clk_1s&btn_out[8],switch[4],cnt,Rc);shift_reg m6(btn_out[9], switch[8],switch[9] ,op1, Q1);regfile m7(btn_out[10],btn_out[11],switch[13:10], op2, data_out); always @(posedge btn_out[7]) op2[ 15: 12]<= op2[15: 12] + 4'd1; assign display_num32b = {op2,op1};//assign display_num=result;always @* begincase (switch[7:6])2'b00: display_num = result; //result2'b01: display_num = cnt;2'b10: display_num = Q1;2'b11: begin if (btn_out[10]==1) display_num = op2; else display_num = data_out;end endcaseendendmoduleRegfile--16程序模块1module regfile(wclk, rclk, address, data_in, data_out);input wire wclk,rclk;input wire [3:0]address;input wire [15:0]data_in;output wire [15:0]data_out;wire [15:0] Yi;wire [15:0] clk;assign clk[15:0] = {16{wclk}} & Yi;wire [15:0] regQ0,regQ1,regQ2,regQ3,regQ4,regQ5,regQ6,regQ7,regQ8,regQ9,regQ10,regQ11,regQ12,regQ13,regQ14,regQ15;decode_4_16 M0(address[3:0],wclk,Yi);//4-16译码器mux_16_1 M1(rclk, address[3:0],regQ0, regQ1, regQ2, regQ3,regQ4, regQ5, regQ6, regQ7,regQ8, regQ9, regQ10,regQ11,regQ12,regQ13,regQ14,regQ15,data_out);//16-1:多选一register16 R0(clk[0], data_in, regQ0),//clk=wclk&YiR1(clk[1], data_in, regQ1),R2(clk[2], data_in, regQ2),R3(clk[3], data_in, regQ3),R4(clk[4], data_in, regQ4),R5(clk[5], data_in, regQ5),R6(clk[6], data_in, regQ6),R7(clk[7], data_in, regQ7),R8(clk[8], data_in, regQ8),R9(clk[9], data_in, regQ9),R10(clk[10], data_in, regQ10),R11(clk[11], data_in, regQ11),R12(clk[12], data_in, regQ12),R13(clk[13], data_in, regQ13),R14(clk[14], data_in, regQ14),R15(clk[15], data_in, regQ15);endmodule4位4—16变量译码器程序模块module decode_4_16(address, wclk, Yi);input wire [3:0]address;input wire wclk;output reg [15:0]Yi;always @*beginif(wclk == 1'b1)case(address[3:0])4'b0000: Yi = 16'h0001;4'b0001: Yi = 16'h0002;4'b0010: Yi = 16'h0004;4'b0011: Yi = 16'h0008;4'b0100: Yi = 16'h0010;4'b0101: Yi = 16'h0020;4'b0110: Yi = 16'h0040;4'b0111: Yi = 16'h0080;4'b1000: Yi = 16'h0100;4'b1001: Yi = 16'h0200;4'b1010: Yi = 16'h0400;4'b1011: Yi = 16'h0800;4'b1100: Yi = 16'h1000;4'b1101: Yi = 16'h2000;4'b1110: Yi = 16'h4000;4'b1111: Yi = 16'h8000;endcaseelseYi = 16'h0000;endendmodule十六选一的数据选择器程序模块module mux_16_1(rclk, address, regQ0, regQ1, regQ2, regQ3, regQ4, regQ5, regQ6, regQ7, regQ8, regQ9, regQ10, regQ11, regQ12, regQ13, regQ14, regQ15,data_out);input wire rclk;input wire [3:0]address;input wire [15:0]regQ0, regQ1, regQ2, regQ3, regQ4, regQ5, regQ6, regQ7, regQ8,regQ9, regQ10, regQ11, regQ12, regQ13, regQ14, regQ15;output reg [15:0]data_out;always @(posedge rclk)begin//if(rclk == 1'b1)case (address[3:0])4'b0000: data_out = regQ0;4'b0001: data_out = regQ1;4'b0010: data_out = regQ2;4'b0011: data_out = regQ3;4'b0100: data_out = regQ4;4'b0101: data_out = regQ5;4'b0110: data_out = regQ6;4'b0111: data_out = regQ7;4'b1000: data_out = regQ8;4'b1001: data_out = regQ9;4'b1010: data_out = regQ10;4'b1011: data_out = regQ11;4'b1100: data_out = regQ12;4'b1101: data_out = regQ13;4'b1110: data_out = regQ14;4'b1111: data_out = regQ15;endcaseendendmodule16位D触发器程序模块module register16(cl, Di, Dot);//无R,D触发器input wire cl;input wire [15:0] Di;output reg [15:0] Dot;always @(posedge cl)Dot <= Di;endmodule16位全加器module adder_16bits(A, B, Ctr, S, Co);parameter size=16;input [15:1] A;input [15:1] B;input Ctr;output [11:1] S;output Co;wire[size-1:1] Ctemp;wire[size:1] Bo;assign Bo={16{Ctr}}^B;adder_1bit A1(.a(A[1]),.b(Bo[1]),.ci(Ctr),.s(S[1]),.co(Ctemp[1])), A2(A[2],Bo[2],Ctemp[1],S[2],Ctemp[2]),A3(A[3],Bo[3],Ctemp[2],S[3],Ctemp[3]),A4(A[4],Bo[4],Ctemp[3],S[4],Ctemp[4]),A5(A[5],Bo[5],Ctemp[4],S[5],Ctemp[5]),A6(A[6],Bo[6],Ctemp[5],S[6],Ctemp[6]),A7(A[7],Bo[7],Ctemp[6],S[7],Ctemp[7]),A8(A[8],Bo[8],Ctemp[7],S[8],Ctemp[8]),A9(A[9],Bo[9],Ctemp[8],S[9],Ctemp[9]),A10(A[10],Bo[10],Ctemp[9],S[10],Ctemp[10]),A11(A[11],Bo[11],Ctemp[10],S[11],Ctemp[11]),A12(A[12],Bo[12],Ctemp[11],S[12],Ctemp[12]),A13(A[13],Bo[13],Ctemp[12],S[13],Ctemp[13]),A14(A[14],Bo[14],Ctemp[13],S[14],Ctemp[14]),A15(A[15],Bo[15],Ctemp[14],S[15],Ctemp[15]),A16(A[16],Bo[16],Ctemp[15],S[16],Co);Endmodule一位全加器module adder_1bit(a, b, ci, s, co);// port declarationinput wire a,b,ci;output wire s,co;and (c1,a,b), (c2,b,ci), (c3,a,ci);xor (s1,a,b), (s,s1,ci);or (co,c1,c2,c3);endmodule拓展32位显示的程序module display32bits(clk,disp_num,digit_anode,segment);input clk;input [31:0] disp_num;output [7:0] digit_anode;output [7:0] segment;reg [7:0] digit_anode;reg [7:0] segment;reg [12:0] cnt=0;wire [31:0] disp_num;reg [3:0] num;always@(posedge clk)begincase(cnt[12:10])3'b000:begindigit_anode <= 8'b11111110;num <= disp_num[3:0];end3'b001:begindigit_anode <= 8'b11111101;num <= disp_num[7:4];end3'b010:begindigit_anode <= 8'b11111011;num <= disp_num[11:8];end3'b011:begindigit_anode <= 8'b11110111;num <= disp_num[15:12];end3'b100:begindigit_anode <= 8'b11101111;num <= disp_num[19:16];end3'b101:begindigit_anode <= 8'b11011111;num <= disp_num[23:20];end3'b110:begindigit_anode <= 8'b10111111;num <= disp_num[27:24];end3'b111:begindigit_anode <= 8'b01111111;num <= disp_num[31:28];endendcasecase(num)4'b0000:segment<=8'b11000000;4'b0001:segment<=8'b11111001;4'b0010:segment<=8'b10100100;4'b0011:segment<=8'b10110000;4'b0100:segment<=8'b10011001;4'b0101:segment<=8'b10010010;4'b0110:segment<=8'b10000010;4'b0111:segment<=8'b11111000;4'b1000:segment<=8'b10000000;4'b1001:segment<=8'b10010000;4'b1010:segment<=8'b10001000;4'b1011:segment<=8'b10000011;4'b1100:segment<=8'b11000110;4'b1101:segment<=8'b10100001;4'b1110:segment<=8'b10000110;4'b1111:segment<=8'b10001110;endcaseendalways@(posedge clk) begincnt<=cnt+1;endendmodule引脚代码NET "clk" LOC= "T9";NET "btn_in[0]" loc="E6";NET "btn_in[1]" loc="D5";NET "btn_in[2]" loc="C5";NET "btn_in[3]" loc="D6";NET "btn_in[4]" loc="C6";NET "btn_in[5]" loc="E7";NET "btn_in[6]" loc="C7";NET "btn_in[7]" loc="D7";NET "btn_in[8]" loc="M13";NET "btn_in[9]" loc="M14";NET "btn_in[10]" loc="L13";NET "btn_in[11]" loc="L14";NET "switch[0]" LOC="F12";NET "switch[1]" LOC="G12";NET "switch[2]" LOC="H14";NET "switch[3]" LOC="H13";NET "switch[4]" LOC="J14";NET "switch[5]" LOC="J13";NET "switch[6]" LOC="K14";NET "switch[7]" LOC="K13";NET "switch[8]" LOC="M10";NET "switch[9]" LOC="F3";NET "switch[10]" LOC="H4";NET "switch[11]" LOC="E4";NET "switch[12]" LOC="G5";NET "switch[13]" LOC="F4";NET "anode[0]" LOC="D14";NET "anode[1]" LOC="G14";NET "anode[2]" LOC="F14";NET "anode[3]" LOC="E13";NET "segment[0]" LOC="E14";NET "segment[1]" LOC="G13";NET "segment[2]" LOC="N15";NET "segment[3]" LOC="P15";NET "segment[4]" LOC="R16";NET "segment[5]" LOC="F13";NET "segment[6]" LOC="N16";NET "segment[7]" LOC="P16";NET "anode[4]" LOC = "B11" ; NET "anode[5]" LOC = "A10" ; NET "anode[6]" LOC = "B10" ; NET "anode[7]" LOC = "A9" ; NET "anode[8]" LOC = "A8" ; NET "anode[9]" LOC = "B8" ; NET "anode[10]" LOC = "A7" ; NET "anode[11]" LOC = "B7" ; NET "segment[8]" LOC = "C8" ; NET "segment[9]" LOC = "D8" ; NET "segment[10]" LOC = "C9" ; NET "segment[11]" LOC = "D10" ; NET "segment[12]" LOC = "A3" ; NET "segment[13]" LOC = "B4" ; NET "segment[14]" LOC = "A4" ; NET "segment[15]" LOC = "B5" ; module shift_reg(clk, S, s_in, p_in, Q); input wire clk, S, s_in;input wire [15:0] p_in;output wire [15:0] Q;wire D[15:0];wire nS;FD FDQ0(.C(clk), .D(D[0]), .Q(Q[0])), FDQ1(.C(clk), .D(D[1]), .Q(Q[1])), FDQ2(.C(clk), .D(D[2]), .Q(Q[2])), FDQ3(.C(clk), .D(D[3]), .Q(Q[3])), FDQ4(.C(clk), .D(D[4]), .Q(Q[4])), FDQ5(.C(clk), .D(D[5]), .Q(Q[5])), FDQ6(.C(clk), .D(D[6]), .Q(Q[6])), FDQ7(.C(clk), .D(D[7]), .Q(Q[7])), FDQ8(.C(clk), .D(D[8]), .Q(Q[8])), FDQ9(.C(clk), .D(D[9]), .Q(Q[9])), FDQ10(.C(clk), .D(D[10]), .Q(Q[10])), FDQ11(.C(clk), .D(D[11]), .Q(Q[11])), FDQ12(.C(clk), .D(D[12]), .Q(Q[12])), FDQ13(.C(clk), .D(D[13]), .Q(Q[13])), FDQ14(.C(clk), .D(D[14]), .Q(Q[14])), FDQ15(.C(clk), .D(D[15]), .Q(Q[15])); OR2 D0_L(.I0(L_0), .I1(R_0), .O(D[0])), D1_L(.I0(L_1), .I1(R_1), .O(D[1])),D2_L(.I0(L_2), .I1(R_2), .O(D[2])),D3_L(.I0(L_3), .I1(R_3), .O(D[3])),D4_L(.I0(L_4), .I1(R_4), .O(D[4])),D5_L(.I0(L_5), .I1(R_5), .O(D[5])),D6_L(.I0(L_6), .I1(R_6), .O(D[6])),D7_L(.I0(L_7), .I1(R_7), .O(D[7])),D8_L(.I0(L_8), .I1(R_8), .O(D[8])),D9_L(.I0(L_9), .I1(R_9), .O(D[9])),D10_L(.I0(L_10), .I1(R_10), .O(D[10])), D11_L(.I0(L_11), .I1(R_11), .O(D[11])), D12_L(.I0(L_12), .I1(R_12), .O(D[12])), D13_L(.I0(L_13), .I1(R_13), .O(D[13])),D14_L(.I0(L_14), .I1(R_14), .O(D[14])),D15_L(.I0(L_15), .I1(R_15), .O(D[15]));AND2 L0_L(.I0(Q[1]), .I1(nS), .O(L_0)),L1_L(.I0(Q[2]), .I1(nS), .O(L_1)),L2_L(.I0(Q[3]), .I1(nS), .O(L_2)),L3_L(.I0(Q[4]), .I1(nS), .O(L_3)),L4_L(.I0(Q[5]), .I1(nS), .O(L_4)),L5_L(.I0(Q[6]), .I1(nS), .O(L_5)),L6_L(.I0(Q[7]), .I1(nS), .O(L_6)),L7_L(.I0(Q[8]), .I1(nS), .O(L_7)),L8_L(.I0(Q[9]), .I1(nS), .O(L_8)),L9_L(.I0(Q[10]), .I1(nS), .O(L_9)),L10_L(.I0(Q[11]), .I1(nS), .O(L_10)),L11_L(.I0(Q[12]), .I1(nS), .O(L_11)),L12_L(.I0(Q[13]), .I1(nS), .O(L_12)),L13_L(.I0(Q[14]), .I1(nS), .O(L_13)),L14_L(.I0(Q[15]), .I1(nS), .O(L_14)),L15_L(.I0(s_in), .I1(nS), .O(L_15));AND2 R0_L(.I0(p_in[0]), .I1(S), .O(R_0)),R1_L(.I0(p_in[1]), .I1(S), .O(R_1)),R2_L(.I0(p_in[2]), .I1(S), .O(R_2)),R3_L(.I0(p_in[3]), .I1(S), .O(R_3)),R4_L(.I0(p_in[4]), .I1(S), .O(R_4)),R5_L(.I0(p_in[5]), .I1(S), .O(R_5)),R6_L(.I0(p_in[6]), .I1(S), .O(R_6)),R7_L(.I0(p_in[7]), .I1(S), .O(R_7)),R8_L(.I0(p_in[8]), .I1(S), .O(R_8)),R9_L(.I0(p_in[9]), .I1(S), .O(R_9)),R10_L(.I0(p_in[10]), .I1(S), .O(R_10)),R11_L(.I0(p_in[11]), .I1(S), .O(R_11)),R12_L(.I0(p_in[12]), .I1(S), .O(R_12)),R13_L(.I0(p_in[13]), .I1(S), .O(R_13)),R14_L(.I0(p_in[14]), .I1(S), .O(R_14)),R15_L(.I0(p_in[15]), .I1(S), .O(R_15));INV nS_L(.I(S), .O(nS));endmodule报告的第二、三、四部分是重点,请认真书写。