远程FPGA虚拟实验平台用SystemVerilog HDL实现硬布线控制器
前言:上次微程序有错呜呜呜 传送的地方有错已经改了 老板们去康康!!疯狂鞠躬.gif->是21年更新博客的时候写的前言,现在抄的话不用管,已经是对的了
这个实验做完了之后差不多课设了,课设不让外传,除了我们学校应该没人学这些,所以我不是很敢发。
有问题可以联系我qq,CSDN经常看不见消息。
找到我的方式参考这里。
我人超好的,请找我玩!(请带我打王者,我课设除了数据结构之外都是A,暗示.jpg)
感谢您一路以来的阅读!鞠躬.gif
原理
参考材料
这次和前两次一样也是直接套用参考材料,所以没有原理直接看实验内容。
实验内容
先看实验平台有个大概思路。
从慕课里的表来看,就是有两种指令,一种用俩寄存器运算,一种用一个寄存器和一个直接数据运算,由OPCODE[3]决定用哪种。
源代码
参考材料
VirtalBoard
写这个主要先回顾一下sALU的功能,M0=0做加法,M0=1做减法,S1S0=00正常加减,01与,10或,11异或。然后把OPCODE译码一下,RegFile和sALU实例化一下。
`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
);
/********* Seven-segment decoder instantiation **********/
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]), .