Write a testbench for use in Quartus' ModelSim Altera in verilog for the following code of a 4x16 register:
module regFile4x16
(input clk,
input write,
input [2:0] wrAddr,
input [15:0] wrData,
input [2:0] rdAddrA,
output [15:0] rdDataA,
input [2:0] rdAddrB,
output [15:0] rdDataB);
reg [15:0] reg0, reg1, reg2, reg3;
assign rdDataA = rdAddrA == 0 ? reg0 :
rdAddrA == 1 ? reg1 :
rdAddrA == 2 ? reg2 :
rdAddrA == 3 ? reg3 : 0;
assign rdDataB = rdAddrB == 0 ? reg0 :
rdAddrB == 1 ? reg1 :
rdAddrB == 2 ? reg2 :
rdAddrB == 3 ? reg3 : 0;
always @(posedge clk) begin
if (write)
case (wrAddr)
0: begin
reg0 <= wrData;
end
1: begin
reg1 <= wrData;
end
2: begin
reg2 <= wrData;
end
3: begin
reg3 <= wrData;
end
endcase
end
endmodule
//Testbench
`timescale 10 ns / 1 ns
module regFile4x16_tb;
reg clk, write;
reg [2:0] wrAddr;
reg [15:0] wrData;
reg [2:0] rdAddrA, rdAddrB;
wire [15:0] rdDataA, rdDataB;
regFile4x16 uut(clk, write, wrAddr, wrData, rdAddrA, rdDataA, rdAddrB, rdDataB);
initial begin
clk = 1'b0;
rdAddrA = 3'b000;
rdAddrB = 3'b000;
write = 1'b1;
wrAddr = 3'b000;
wrData = 16'hFFFF;
#20;
wrAddr = 3'b001;
wrData = 16'hEEEE;
#20;
wrAddr = 3'b010;
wrData = 16'hDDDD;
#20;
wrAddr = 3'b011;
wrData = 16'hCCCC;
#20;
rdAddrA = 3'b001;
rdAddrB = 3'b011;
#20;
rdAddrA = 3'b010;
rdAddrB = 3'b011;
#20;
rdAddrA = 3'b011;
rdAddrB = 3'b001;
#20;
end
always #10 clk = ~clk;
endmodule
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//modelSim Simulation
Write a testbench for use in Quartus' ModelSim Altera in verilog for the following code of...
Please help to complete the code and write the testbench to design the following adder. 1.In this section, you add pipeline stage. 8 bits are used at every pipeline stage.Use the following template to complete your Verilog coding. // Addition of two 16 bit, 2's complement nos., n1 and n2. 8 bits addition at a time. Result is 17 bits. module adder_b (clk, n1, n2, sum) ; input clk ; input [15:0] n1 ; input [15:0] n2 ; output [16:0]...
a Read the following codes in Verilog and the corresponding testbench file. Describe what the codes are doing by adding comments in the code. Then write down the simulation results of res1, res2, res3, and res4, respectively. Source code module vector_defn (num1, res1, res2, res3, res4); input [7:0] num1; output res1; output [3:0] res2; output [0:7] res3; output [15:0] res4; assign res1=num1[2]; assign res2=num1[7:4]; assign res3=num1; assign res4={2{num1}}; endmodule testbench: `timescale 1ns / 1ps module vector_defn_tb; reg [7:0] in1; wire...
(15 pts) 1. Draw a logic diagram for the Verilog code. module Seq_Ckt ( CLK, PR, sel, Q); input CLK, PR, sel; output reg [2:0] Q; reg [2:0] y; assign Q = y; always @ (posedge PR, posedge CLK) begin if (PR== 1) then y <= 3'b111; else if (sel) begin y[2] <= y[1] ^ y[0]; y[1] <= y[2]; y[1]; end else y[2] <= y[2] ; y[1] <= y[1]; y[0]; y[O] <= y[0] <= end endmodule
Write a testbench for LFShift shift register
example
module 1f3r input clk, input reset, output a ); reg (5:0] shift; wire xor_sum; assign xor_sum = shift[1] ^ shift[4]; // feedback taps always @ (posedge clk) if (reset) shift <= 6'b111111; // initialize LFSR else shift <= { xor_sum, shift [5:1] }; // shift right assign a = shift[0]; // output of LFSR endmodule
Given the following verilog code, draw the corresponding state diagram for it. module mysterious (input reset, clk, TB, TA, output reg [1:0] LB, LA); reg [1:0] cstate, nstate; parameter S0 = 2'b00; parameter S1 = 2'b01; parameter S2 = 2'b10; parameter S3 = 2'b11; parameter grn = 2'b00; parameter ylw = 2'b01; parameter rd = 2'b10; // state register always @ (posedge clk, posedge reset) begin if (reset) cstate <= S0; else cstate <= nstate; end // next state logic...
– Write and test a constrained random stimulus testcase for the testbench. Use ModelSim or a similar simulator to test the transactor. Provide the code and evidence of its function. // ---------------------------------------------------------------------------- // File name: alu.v // Designed by: Jim Moran // ---------------------------------------------------------------------------- // // This module is the Arithmetic Logic Unit // // ---------------------------------------------------------------------------- `timescale 1ns/1ps //----------------------------------------------------------------------------- // Module Declaration //----------------------------------------------------------------------------- module alu ( // Global Signals Clk_In, // Rising Edge Clock Input Rst_l_In, // Active Low Reset Input ...
How do I create a testbench with the verilog code below? module ganada(Clk, U1, D2, U2, D3, U3, D4, F1, F2, F3, F4, CF, S); input Clk, U1, D2, U2, D3, U3, D4, F1, F2, F3, F4; output [6:0] CF, S; reg [6:0] CF, S; reg [1:0] SS, B, NS; initial begin NS=2'b00; SS=2'b00; end always@(posedge Clk) begin case(NS) 2'b00: CF=7'b1111001; 2'b01: CF=7'b0100100; 2'b10: CF=7'b0110000; 2'b11: CF=7'b0011001; endcase case(SUD) 2'b00: S=7'b1000000; 2'b01: S=7'b1111001; 2'b10: S=7'b0100100; default: S=7'b0000000; endcase if(U1==1 ||...
I need help writing a test bench for the following Verilog code module CU(IE, WE, WA, RAE, RAA, RBE, RBA, ALU, SH, OE, start, clk, reset, Ng5); //nG5 denotes (N>5); input start, clk, reset; output IE, WE, RAE, RBE, OE; output [1:0] WA, RAA, RBA, SH; output [2:0] ALU; input wire Ng5; reg [1:0] state; reg [1:0] nextstate; parameter S0 = 3'b000; parameter S1 = 3'b001;...
Please explain what he verilog code does: module lab7_2_3( input clk, input Enable, input Clear, input Load, output [3:0] Q, reg [3:0] count, wire cnt_done ); assign cnt_done = ~| count; assign Q = count; always @(posedge clk) if (Clear) count <= 0; else if (Enable) if (Load | cnt_done) count <= 4'b1010; // decimal 10 else count <= count - 1; Endmodule
I need help doing the code using Verilog modelsim Design a 32-bit register using the D Flip-Flop from part (1) so that it has the following features: (a) The Register has these ports Outputs: Q[31:0] Inputs: D[31:0] CLK is the clock signal EN is a synchronous signal for enabling the register. When EN is asserted at the sensitive edge of the CLK, the input D is loaded into the register. RESET We will leave this input unconnected, but will define...