远程FPGA虚拟实验平台用SystemVerilog HDL实现寄存器组和堆

本文介绍了如何使用SystemVerilog在远程FPGA虚拟实验平台上实现单端口和三端口寄存器组。单端口寄存器组通过一个端口完成读写操作,而三端口寄存器堆增加了读取端口,允许同时读取多个寄存器。文中提供了VirtalBoard、SevenSegDecode和DataReg模块的源代码,并详细解释了其工作原理和逻辑。实验中还涉及到了四选一多路器和二四译码器的应用。
摘要由CSDN通过智能技术生成

原理

单端口寄存器组

单端口寄存器组在实验平台的图如下:单端口寄存器顶层图
由图可知,单端口寄存器组的单端口指的是写入和读取的地址用的是来自一个端口的信号,在Load=1时,可以通过D,Index和时钟信号写入寄存器的值,同时,由于只有一个端口,四选一多路器读取的值是和写入的值同步的。

三端口寄存器堆

三端口寄存器堆的原理如下:
三端口寄存器堆顶层图
由图可知,三端口寄存器组较单端口寄存器堆多了一个多路选择器和输出。同时多了两个输入地址的端口RA1和RA2,用以控制两个多路选择器读哪个寄存器的值,这使得它可以在写入1个寄存器的同时读出2个不同寄存器的值。

源代码

单端口寄存器组

VirtalBoard模块

实验面板:

`default_nettype none 
module VirtualBoard (
    input  logic  CLOCK,      // 10 MHz Input Clock 
    input  logic [19:0] PB,   // 20 Push Buttons, logical 1 when pressed
    input  logic [35:0] S,    // 36 Switches
    output logic [35:0] L,    // 36 LEDs, drive logical 1 to light up
    output logic  [7:0] SD7,  // 8 common anode Seven-segment Display
    output logic  [7:0] SD6,
    output logic  [7:0] SD5,
    output logic  [7:0] SD4,
    output logic  [7:0] SD3,
    output logic  [7:0] SD2,
    output logic  [7:0] SD1,
    output logic  [7:0] SD0
);

一堆七段译码器的实例化:

logic [3:0] HD[7:0];  // 8 hexadecimal display 
SevenSegDecode ssdecode_inst7(.iData(HD[7]), .oSeg(SD7));
SevenSegDecode ssdecode_inst6(.iData(HD[6]), .oSeg(SD6));
SevenSegDecode ssdecode_inst5(.iData(HD[5]), .oSeg(SD5));
SevenSegDecode ssdecode_inst4(.iData(HD[4]), .oSeg(SD4));
SevenSegDecode ssdecode_inst3(.iData(HD[3]), .oSeg(SD3));
SevenSegDecode ssdecode_inst2(.iData(HD[2]), .oSeg</
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值