OpenCores
URL https://opencores.org/ocsvn/logicprobe/logicprobe/trunk

Subversion Repositories logicprobe

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /logicprobe
    from Rev 4 to Rev 5
    Reverse comparison

Rev 4 → Rev 5

/trunk/tst/sim-c/lfsr128.c
0,0 → 1,50
/*
* lfsr128.c -- a linear feedback shift register with 128 bits
* (actually constructed from 4 instances of a 32-bit lfsr)
*/
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
int main(void) {
unsigned int startState[4] = {
0xC70337DB,
0x7F4D514F,
0x75377599,
0x7D5937A3
};
/* taps at 32 31 29 1 */
unsigned int taps = 0xD0000001;
unsigned int lfsr[4];
int i, n;
 
for (i = 0; i < 4; i++) {
lfsr[i] = startState[i];
}
for (n = 0; n < 530; n++) {
/*
* The trigger condition in the actual hardware test will be set
* to lfsr[0]==0x7119C0CD, which is reached at n==10. Therefore
* we print out n-10 instead of n to get identical index numbers.
*/
printf("%03d: ", n - 10);
for (i = 0; i < 4; i++) {
printf("%02X ", (lfsr[i] >> 24) & 0xFF);
printf("%02X ", (lfsr[i] >> 16) & 0xFF);
printf("%02X ", (lfsr[i] >> 8) & 0xFF);
printf("%02X ", (lfsr[i] >> 0) & 0xFF);
}
printf("\n");
for (i = 0; i < 4; i++) {
if ((lfsr[i] & 1) == 0) {
lfsr[i] = lfsr[i] >> 1;
} else {
lfsr[i] = (lfsr[i] >> 1) ^ taps;
}
}
}
return 0;
}
/trunk/tst/sim-c/Makefile
0,0 → 1,14
#
# Makefile to build a simulation of the test circuit
#
 
all: ref
 
ref: lfsr128
./lfsr128 >ref
 
lfsr128: lfsr128.c
gcc -Wall -o lfsr128 lfsr128.c
 
clean:
rm -f *~ lfsr128 ref
/trunk/tst/sim-v/top.cfg
0,0 → 1,20
*-5.000000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
@28
top.clk
top.reset_in_n
top.lfsr.reset
@22
top.lfsr.lfsr0[31:0]
top.lfsr.lfsr1[31:0]
top.lfsr.lfsr2[31:0]
top.lfsr.lfsr3[31:0]
@28
top.lfsr.trigger
top.lfsr.sample
top.lfsr.lp.sampler.full
@22
top.lfsr.lp.rdaddr[12:0]
top.lfsr.lp.data[7:0]
@28
top.lfsr.lp.ready
top.lfsr.lp.write
/trunk/tst/sim-v/lfsr128.v
0,0 → 1,78
//
// lfsr128.v -- a linear feedback shift register with 128 bits
// (actually constructed from 4 instances of a 32-bit lfsr)
//
 
`include "../../src/fpga/LogicProbe.v"
`timescale 1ns/1ns
 
module lfsr128(clk, reset_in_n, s, rs232_txd);
input clk;
input reset_in_n;
output [3:0] s;
output rs232_txd;
 
wire reset;
reg [3:0] reset_counter;
 
reg [31:0] lfsr0;
reg [31:0] lfsr1;
reg [31:0] lfsr2;
reg [31:0] lfsr3;
 
wire trigger;
wire sample;
wire [127:0] log_data;
 
assign reset = (reset_counter == 4'hF) ? 0 : 1;
always @(posedge clk) begin
if (reset_in_n == 0) begin
reset_counter <= 4'h0;
end else begin
if (reset_counter != 4'hF) begin
reset_counter <= reset_counter + 1;
end
end
end
 
always @(posedge clk) begin
if (reset == 1) begin
lfsr0 <= 32'hC70337DB;
lfsr1 <= 32'h7F4D514F;
lfsr2 <= 32'h75377599;
lfsr3 <= 32'h7D5937A3;
end else begin
if (lfsr0[0] == 0) begin
lfsr0 <= lfsr0 >> 1;
end else begin
lfsr0 <= (lfsr0 >> 1) ^ 32'hD0000001;
end
if (lfsr1[0] == 0) begin
lfsr1 <= lfsr1 >> 1;
end else begin
lfsr1 <= (lfsr1 >> 1) ^ 32'hD0000001;
end
if (lfsr2[0] == 0) begin
lfsr2 <= lfsr2 >> 1;
end else begin
lfsr2 <= (lfsr2 >> 1) ^ 32'hD0000001;
end
if (lfsr3[0] == 0) begin
lfsr3 <= lfsr3 >> 1;
end else begin
lfsr3 <= (lfsr3 >> 1) ^ 32'hD0000001;
end
end
end
 
assign s[3] = lfsr0[27];
assign s[2] = lfsr1[13];
assign s[1] = lfsr2[23];
assign s[0] = lfsr3[11];
 
assign trigger = (lfsr0 == 32'h7119C0CD) ? 1 : 0;
assign sample = 1;
assign log_data = { lfsr0, lfsr1, lfsr2, lfsr3 };
LogicProbe lp(clk, reset, trigger, sample, log_data, rs232_txd);
 
endmodule
/trunk/tst/sim-v/top.v
0,0 → 1,30
//
// top.v -- top-level module to test lfsr128 with LogicProbe
//
 
`include "lfsr128.v"
`timescale 1ns/1ns
 
module top;
 
reg clk;
reg reset_in_n;
wire [3:0] s;
wire rs232_txd;
 
lfsr128 lfsr(clk, reset_in_n, s, rs232_txd);
 
initial begin
#0 $dumpfile("dump.vcd");
$dumpvars(0, top);
clk = 1;
reset_in_n = 0;
#145 reset_in_n = 1;
#20000 $finish;
end
 
always begin
#10 clk = ~clk;
end
 
endmodule
/trunk/tst/sim-v/Makefile
0,0 → 1,17
#
# Makefile to build a simulation of the test circuit
#
 
all: dump.vcd
 
show: dump.vcd
gtkwave dump.vcd top.cfg
 
dump.vcd: top
./top
 
top: top.v
iverilog -Wall -o top top.v
 
clean:
rm -f *~ top dump.vcd

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.