URL
https://opencores.org/ocsvn/socgen/socgen/trunk
Subversion Repositories socgen
Compare Revisions
- This comparison shows the changes necessary to convert path
/socgen/trunk
- from Rev 15 to Rev 16
- ↔ Reverse comparison
Rev 15 → Rev 16
/bench/verilog/TestBench
41,17 → 41,42
/* */ |
/**********************************************************************/ |
|
`include "./TB.defs" |
|
`ifndef TIMESCALE |
`define TIMESCALE 1ns/1ns |
`endif |
|
|
`ifndef TIMEFORMAT |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`endif |
|
`include "./TB.defs" |
|
`ifndef PERIOD |
`define PERIOD 40.00000 |
`endif |
|
`ifndef TIMEOUT |
`define TIMEOUT 200000 |
`endif |
|
|
`timescale `TIMESCALE |
|
|
`include "./filelist" |
`include "./liblist" |
`include "./modellist" |
`include "./liblist" |
|
|
module TB(); |
|
initial |
begin |
`TIMEFORMAT |
end |
|
wire clk; |
wire reset; |
|
74,10 → 99,8
); |
|
|
`ifndef TIMEOUT |
`define TIMEOUT 200000 |
`endif |
|
|
initial |
begin |
cg.next (`TIMEOUT); |
/bin/Makefile.root
2,8 → 2,8
MAKE=make |
|
VPP_NAME=vppreproc |
VERILOG_NAME=iverilog |
|
|
CUR_DIR=$(shell pwd) |
VAR_DIR=$(CUR_DIR)/variants |
SRC_DIR=$(CUR_DIR)/verilog |
19,7 → 19,7
################################################################################ |
|
prepare_dirs: |
@if [ ! -d $(GEN_DIR) ]; then mkdir -p $(GEN_DIR);mkdir $(GEN_DIR)/syn;mkdir $(GEN_DIR)/sim; fi |
@if [ ! -d $(GEN_DIR) ]; then mkdir -p $(GEN_DIR);mkdir $(GEN_DIR)/syn;mkdir $(GEN_DIR)/sim; fi |
|
|
build_fsm: prepare_dirs |
38,15 → 38,15
|
build_hw: build_fsm |
@echo |
@for VARIENT in `ls $(VAR_DIR)`; do \ |
@for VARIANT in `ls $(VAR_DIR)`; do \ |
echo "################################################################################"; \ |
echo; \ |
echo "Building: $$VARIENT ####"; echo; \ |
cp $(VAR_DIR)/$$VARIENT/$(DEF_FILE) $(DEF_FILE); \ |
cp ../doc/copyright.v $(GEN_DIR)/sim/$$VARIENT.v ; \ |
$(VPP_NAME) --simple $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/sim/$$VARIENT.v ; \ |
cp ../doc/copyright.v $(GEN_DIR)/syn/$$VARIENT.v ; \ |
$(VPP_NAME) --simple -DSYNTHESIS $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/syn/$$VARIENT.v ; \ |
echo "Building: $$VARIANT ####"; echo; \ |
cp $(VAR_DIR)/$$VARIANT/$(DEF_FILE) $(DEF_FILE); \ |
cp ../doc/copyright.v $(GEN_DIR)/sim/$$VARIANT.v ; \ |
$(VPP_NAME) --noline --noblank $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/sim/$$VARIANT.v ; \ |
cp ../doc/copyright.v $(GEN_DIR)/syn/$$VARIANT.v ; \ |
$(VPP_NAME) --noline --noblank -DSYNTHESIS $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/syn/$$VARIANT.v ; \ |
rm $(DEF_FILE); \ |
done; \ |
|
94,14 → 94,14
|
.PHONY run_sims: |
run_sims: clean_sims |
@for VARIENT_PROG in `ls $(CUR_DIR)/../run`; do \ |
@for VARIANT_PROG in `ls $(CUR_DIR)/../run`; do \ |
echo "################################################################################"; \ |
echo; \ |
echo "Simulating: $$VARIENT_PROG ####"; echo; \ |
cd $(CUR_DIR)/../run/$$VARIENT_PROG/;\ |
echo "Simulating: $$VARIANT_PROG ####"; echo; \ |
cd $(CUR_DIR)/../run/$$VARIANT_PROG/;\ |
echo "include ../../../../../bin/Makefile.root" > Makefile;\ |
echo -n "test=" >> Makefile;\ |
echo $$VARIENT_PROG >> Makefile;\ |
echo $$VARIANT_PROG >> Makefile;\ |
make sim;\ |
done; \ |
|
109,7 → 109,7
.PHONY sim: |
sim: |
(\ |
iverilog -D VCD ../../bench/verilog/TestBench;\ |
$(VERILOG_NAME) -D VCD ../../bench/verilog/TestBench;\ |
./a.out | tee ./${test}_sim.log ;\ |
mv *.log ../../log;\ |
mv TestBench.vcd ../../out/${test}.vcd ;\ |
122,7 → 122,7
.PHONY rtlsim: |
rtlsim: |
(\ |
iverilog -D VCD ../../../bench/verilog/TestBench;\ |
$(VERILOG_NAME) -D VCD ../../../bench/verilog/TestBench;\ |
./a.out | tee ./${test}_sim.log ;\ |
mv *.log ../../../log;\ |
mv TestBench.vcd ../../../out/${test}.vcd ;\ |
/bin/Makefile.root.x10
38,15 → 38,15
|
build_hw: build_fsm |
@echo |
@for VARIENT in `ls $(VAR_DIR)`; do \ |
@for VARIANT in `ls $(VAR_DIR)`; do \ |
echo "################################################################################"; \ |
echo; \ |
echo "Building: $$VARIENT ####"; echo; \ |
cp $(VAR_DIR)/$$VARIENT/$(DEF_FILE) $(DEF_FILE); \ |
cp ../doc/copyright.v $(GEN_DIR)/sim/$$VARIENT.v ; \ |
$(VPP_NAME) --simple $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/sim/$$VARIENT.v ; \ |
cp ../doc/copyright.v $(GEN_DIR)/syn/$$VARIENT.v ; \ |
$(VPP_NAME) --simple -DSYNTHESIS $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/syn/$$VARIENT.v ; \ |
echo "Building: $$VARIANT ####"; echo; \ |
cp $(VAR_DIR)/$$VARIANT/$(DEF_FILE) $(DEF_FILE); \ |
cp ../doc/copyright.v $(GEN_DIR)/sim/$$VARIANT.v ; \ |
$(VPP_NAME) --simple $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/sim/$$VARIANT.v ; \ |
cp ../doc/copyright.v $(GEN_DIR)/syn/$$VARIANT.v ; \ |
$(VPP_NAME) --simple -DSYNTHESIS $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/syn/$$VARIANT.v ; \ |
rm $(DEF_FILE); \ |
done; \ |
|
94,14 → 94,14
|
.PHONY run_sims: |
run_sims: clean_sims |
@for VARIENT_PROG in `ls $(CUR_DIR)/../run`; do \ |
@for VARIANT_PROG in `ls $(CUR_DIR)/../run`; do \ |
echo "################################################################################"; \ |
echo; \ |
echo "Simulating: $$VARIENT_PROG ####"; echo; \ |
cd $(CUR_DIR)/../run/$$VARIENT_PROG/;\ |
echo "Simulating: $$VARIANT_PROG ####"; echo; \ |
cd $(CUR_DIR)/../run/$$VARIANT_PROG/;\ |
echo "include ../../../../../bin/Makefile.root" > Makefile;\ |
echo -n "test=" >> Makefile;\ |
echo $$VARIENT_PROG >> Makefile;\ |
echo $$VARIANT_PROG >> Makefile;\ |
make sim;\ |
done; \ |
|
/bin/Makefile.root.x11
38,15 → 38,15
|
build_hw: build_fsm |
@echo |
@for VARIENT in `ls $(VAR_DIR)`; do \ |
@for VARIANT in `ls $(VAR_DIR)`; do \ |
echo "################################################################################"; \ |
echo; \ |
echo "Building: $$VARIENT ####"; echo; \ |
cp $(VAR_DIR)/$$VARIENT/$(DEF_FILE) $(DEF_FILE); \ |
cp ../doc/copyright.v $(GEN_DIR)/sim/$$VARIENT.v ; \ |
$(VPP_NAME) --simple $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/sim/$$VARIENT.v ; \ |
cp ../doc/copyright.v $(GEN_DIR)/syn/$$VARIENT.v ; \ |
$(VPP_NAME) --simple -DSYNTHESIS $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/syn/$$VARIENT.v ; \ |
echo "Building: $$VARIANT ####"; echo; \ |
cp $(VAR_DIR)/$$VARIANT/$(DEF_FILE) $(DEF_FILE); \ |
cp ../doc/copyright.v $(GEN_DIR)/sim/$$VARIANT.v ; \ |
$(VPP_NAME) --simple $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/sim/$$VARIANT.v ; \ |
cp ../doc/copyright.v $(GEN_DIR)/syn/$$VARIANT.v ; \ |
$(VPP_NAME) --simple -DSYNTHESIS $(DEF_FILE) $(SRC_DIR)/*.v >> $(GEN_DIR)/syn/$$VARIANT.v ; \ |
rm $(DEF_FILE); \ |
done; \ |
|
94,14 → 94,14
|
.PHONY run_sims: |
run_sims: clean_sims |
@for VARIENT_PROG in `ls $(CUR_DIR)/../run`; do \ |
@for VARIANT_PROG in `ls $(CUR_DIR)/../run`; do \ |
echo "################################################################################"; \ |
echo; \ |
echo "Simulating: $$VARIENT_PROG ####"; echo; \ |
cd $(CUR_DIR)/../run/$$VARIENT_PROG/;\ |
echo "Simulating: $$VARIANT_PROG ####"; echo; \ |
cd $(CUR_DIR)/../run/$$VARIANT_PROG/;\ |
echo "include ../../../../../bin/Makefile.root" > Makefile;\ |
echo -n "test=" >> Makefile;\ |
echo $$VARIENT_PROG >> Makefile;\ |
echo $$VARIANT_PROG >> Makefile;\ |
make sim;\ |
done; \ |
|
179,14 → 179,9
map -p $(Part) -cm area -ir off -pr off -c 100 -o $(board)_$(Design)_map.ncd $(board)_$(Design).ngd $(board)_$(Design).pcf;\ |
par -w -ol std -t 1 $(board)_$(Design)_map.ncd $(board)_$(Design).ncd $(board)_$(Design).pcf ;\ |
trce -e 3 -s 5 -xml $(board)_$(Design) $(board)_$(Design).ncd -o $(board)_$(Design).twr $(board)_$(Design).pcf -ucf ../target/Pad_Ring.ucf ;\ |
bitgen -f ../target/cclk.ut $(board)_$(Design).ncd;\ |
mv $(board)_$(Design).bit Board_Design_cclk.bit ;\ |
promgen -u 0 Board_Design_cclk ; \ |
mv Board_Design_cclk.mcs ../debug ;\ |
bitgen -f ../target/jtag.ut $(board)_$(Design).ncd;\ |
mv $(board)_$(Design).bit Board_Design_jtag.bit ;\ |
impact -batch ../debug/impact_bat ;\ |
mv *.bit ../debug ;\ |
) |
|
|
/bin/ver2gedasym
0,0 → 1,278
eval 'exec `which perl` -S $0 ${1+"$@"}' |
if 0; |
|
#/**********************************************************************/ |
#/* */ |
#/* ------- */ |
#/* / SOC \ */ |
#/* / GEN \ */ |
#/* / TOOL \ */ |
#/* ============== */ |
#/* | | */ |
#/* |____________| */ |
#/* */ |
#/* convert verilog file(s) to a geda symbol */ |
#/* */ |
#/* */ |
#/* Author(s): */ |
#/* - John Eaton, jt_eaton@opencores.org */ |
#/* */ |
#/**********************************************************************/ |
#/* */ |
#/* Copyright (C) <2010> <Ouabache Design Works> */ |
#/* */ |
#/* This source file may be used and distributed without */ |
#/* restriction provided that this copyright statement is not */ |
#/* removed from the file and that any derivative work contains */ |
#/* the original copyright notice and the associated disclaimer. */ |
#/* */ |
#/* This source file is free software; you can redistribute it */ |
#/* and/or modify it under the terms of the GNU Lesser General */ |
#/* Public License as published by the Free Software Foundation; */ |
#/* either version 2.1 of the License, or (at your option) any */ |
#/* later version. */ |
#/* */ |
#/* This source is distributed in the hope that it will be */ |
#/* useful, but WITHOUT ANY WARRANTY; without even the implied */ |
#/* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR */ |
#/* PURPOSE. See the GNU Lesser General Public License for more */ |
#/* details. */ |
#/* */ |
#/* You should have received a copy of the GNU Lesser General */ |
#/* Public License along with this source; if not, download it */ |
#/* from http://www.opencores.org/lgpl.shtml */ |
#/* */ |
#/**********************************************************************/ |
|
# ToDo: |
# parse reg from output bus name |
# parse bus and change pin type to bus |
|
use Verilog::Netlist; |
|
# Setup options so files can be found |
use Verilog::Getopt; |
my $opt = new Verilog::Getopt; |
$opt->parameter( "+incdir+verilog", |
"-y","verilog", |
); |
|
|
@files = @ARGV; |
|
|
# Prepare netlist |
my $nl = new Verilog::Netlist (options => $opt,); |
|
foreach $file (@files) { |
print "Parsing $file\n"; |
$nl->read_file (filename=>$file); |
} |
|
|
|
|
|
|
|
# Read in any sub-modules |
$nl->link(); |
$nl->exit_if_error(); |
|
|
foreach my $mod ($nl->top_modules_sorted) {make_sch ($mod);} |
|
|
|
sub make_sch { |
my $mod = shift; |
my $mod_name = $mod->name; |
|
my $in_count = 0; |
my $out_count = 0; |
my $in_length = 0; |
my $out_length = 0; |
|
my $color = 5; |
my $size = 10; |
|
|
open(FILE,">sym/${mod_name}.sym") or die "No sym directory"; |
|
foreach my $sig ($mod->ports_sorted) { |
|
my $dir = $sig->direction; |
my $data_type = $sig->data_type; |
my $sig_name = $sig->name; |
$data_type =~ s/reg //; |
$data_type =~ s/reg//; |
|
|
if($data_type) |
{ |
$pin_name = "$sig_name"."$data_type"; |
if("in" eq $dir) |
{ |
push(@invads,$pin_name); |
$in_count = $in_count+1; |
if( length($pin_name) > $in_length) { $in_length = length($pin_name)}; |
} |
if("out" eq $dir) |
{ |
push(@outvads,$pin_name); |
$out_count = $out_count+1; |
if( length($pin_name) > $out_length){ $out_length = length($pin_name) } |
} |
|
if("inout" eq $dir) |
{ |
push(@inoutvads,$pin_name); |
$out_count = $out_count+1; |
if( length($pin_name) > $out_length){ $out_length = length($pin_name) } |
} |
|
|
|
} |
else |
{ |
$pin_name = $sig_name; |
if("in" eq $dir) |
{ |
push(@inpads,$pin_name); |
$in_count = $in_count+1; |
if( length($pin_name) > $in_length){ $in_length = length($pin_name) } |
} |
if("out" eq $dir) |
{ |
push(@outpads,$pin_name); |
$out_count = $out_count+1; |
if( length($pin_name) > $out_length){ $out_length = length($pin_name) } |
} |
|
if("inout" eq $dir) |
{ |
push(@inoutpads,$pin_name); |
$out_count = $out_count+1; |
if( length($pin_name) > $out_length){ $out_length = length($pin_name) } |
} |
|
}; |
|
|
} |
|
my $max_pins; |
|
if($in_count > $out_count) {$max_pins = $in_count ;} else {$max_pins = $out_count ;} |
|
my $box_h = ($max_pins * 200) +300; |
my $box_w = ($in_length +$out_length)*10*$size +400; |
my $out_title = ($in_length +$out_length)*10*$size +600; |
my $out_edg = ($in_length +$out_length)*10*$size +700; |
my $out_pad = ($in_length +$out_length)*10*$size +1000; |
my $title = $box_h +150; |
my $ref_des = $box_h +350; |
|
printf FILE ("v 20100214 1\n"); |
printf FILE ("B 300 0 $box_w $box_h 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1\n"); |
printf FILE ("T 400 $title 5 10 1 1 0 0 1 1\ndevice=%s\n", $mod->name); |
printf FILE ("T 400 $ref_des 8 10 1 1 0 0 1 1\n%srefdes=U?\n"); |
|
printf ("%s\n", $mod->name); |
|
|
my $pin_y = 200; |
my $pin_seq = 1; |
|
while( $name =pop(@invads)) |
{ |
printf FILE ("P 300 $pin_y 0 $pin_y 10 1 1 \n"); |
printf FILE ("{\nT 400 $pin_y $color $size 1 1 0 1 1 1\npinnumber=%s\n",$name); |
printf FILE ("T 400 $pin_y $color $size 0 1 0 1 1 1\npinseq=%s\n}\n",$pin_seq); |
$pin_seq = $pin_seq +1; |
$pin_y = $pin_y +200; |
} |
|
|
while( $name =pop(@inpads)) |
{ |
printf FILE ("P 300 $pin_y 0 $pin_y 4 0 1 \n"); |
printf FILE ("{\nT 400 $pin_y $color $size 1 1 0 1 1 1 \npinnumber=%s\n",$name); |
printf FILE ("T 400 $pin_y $color $size 0 1 0 1 1 1 \npinseq=%s\n}\n",$pin_seq); |
$pin_seq = $pin_seq +1; |
$pin_y = $pin_y +200; |
} |
|
|
|
$pin_y = 200; |
|
while( $name =pop(@outvads)) |
{ |
printf FILE ("P $out_edg $pin_y $out_pad $pin_y 10 1 1\n"); |
printf FILE ("{\nT $out_title $pin_y $color $size 1 1 0 7 1 1 \npinnumber=%s\n",$name); |
printf FILE ("T $out_title $pin_y $color $size 0 1 0 7 1 1 \npinseq=%s\n}\n",$pin_seq); |
$pin_seq = $pin_seq +1; |
$pin_y = $pin_y +200; |
} |
|
|
while( $name =pop(@outpads)) |
{ |
printf FILE ("P $out_edg $pin_y $out_pad $pin_y 4 0 1\n"); |
printf FILE ("{\nT $out_title $pin_y $color $size 1 1 0 7 1 1\npinnumber=%s\n",$name); |
printf FILE ("T $out_edg $pin_y $color $size 0 1 0 7 1 1\npinseq=%s\n}\n",$pin_seq); |
$pin_seq = $pin_seq +1; |
$pin_y = $pin_y +200; |
} |
|
|
|
|
while( $name =pop(@inoutvads)) |
{ |
printf FILE ("P $out_edg $pin_y $out_pad $pin_y 10 1 1\n"); |
printf FILE ("{\nT $out_title $pin_y $color $size 1 1 0 7 1 1 \npinnumber=%s\n",$name); |
printf FILE ("T $out_title $pin_y $color $size 0 1 0 7 1 1 \npinseq=%s\n}\n",$pin_seq); |
$pin_seq = $pin_seq +1; |
$pin_y = $pin_y +200; |
} |
|
|
while( $name =pop(@inoutpads)) |
{ |
printf FILE ("P $out_edg $pin_y $out_pad $pin_y 4 0 1\n"); |
printf FILE ("{\nT $out_title $pin_y $color $size 1 1 0 7 1 1\npinnumber=%s\n",$name); |
printf FILE ("T $out_edg $pin_y $color $size 0 1 0 7 1 1\npinseq=%s\n}\n",$pin_seq); |
$pin_seq = $pin_seq +1; |
$pin_y = $pin_y +200; |
} |
|
|
|
|
|
|
|
|
foreach my $cell ($mod->cells_sorted) { |
close(FILE); |
make_sch ($cell->submod, $cell->name) if $cell->submod; |
} |
} |
|
|
|
|
|
|
|
1; |
|
|
|
|
|
|
|
/bin/ver2gedasch
0,0 → 1,252
eval 'exec `which perl` -S $0 ${1+"$@"}' |
if 0; |
|
#/**********************************************************************/ |
#/* */ |
#/* ------- */ |
#/* / SOC \ */ |
#/* / GEN \ */ |
#/* / TOOL \ */ |
#/* ============== */ |
#/* | | */ |
#/* |____________| */ |
#/* */ |
#/* convert verilog file(s)ports to a geda schematic */ |
#/* */ |
#/* */ |
#/* Author(s): */ |
#/* - John Eaton, jt_eaton@opencores.org */ |
#/* */ |
#/**********************************************************************/ |
#/* */ |
#/* Copyright (C) <2010> <Ouabache Design Works> */ |
#/* */ |
#/* This source file may be used and distributed without */ |
#/* restriction provided that this copyright statement is not */ |
#/* removed from the file and that any derivative work contains */ |
#/* the original copyright notice and the associated disclaimer. */ |
#/* */ |
#/* This source file is free software; you can redistribute it */ |
#/* and/or modify it under the terms of the GNU Lesser General */ |
#/* Public License as published by the Free Software Foundation; */ |
#/* either version 2.1 of the License, or (at your option) any */ |
#/* later version. */ |
#/* */ |
#/* This source is distributed in the hope that it will be */ |
#/* useful, but WITHOUT ANY WARRANTY; without even the implied */ |
#/* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR */ |
#/* PURPOSE. See the GNU Lesser General Public License for more */ |
#/* details. */ |
#/* */ |
#/* You should have received a copy of the GNU Lesser General */ |
#/* Public License along with this source; if not, download it */ |
#/* from http://www.opencores.org/lgpl.shtml */ |
#/* */ |
#/**********************************************************************/ |
|
# ToDo: |
# parse reg from output bus name |
# parse bus and change pin type to bus |
|
use Verilog::Netlist; |
|
# Setup options so files can be found |
use Verilog::Getopt; |
my $opt = new Verilog::Getopt; |
$opt->parameter( "+incdir+verilog", |
"-y","verilog", |
); |
|
|
@files = @ARGV; |
|
|
# Prepare netlist |
my $nl = new Verilog::Netlist (options => $opt,); |
|
foreach $file (@files) { |
print "Parsing $file\n"; |
$nl->read_file (filename=>$file); |
} |
|
|
|
|
|
|
|
# Read in any sub-modules |
$nl->link(); |
$nl->exit_if_error(); |
|
|
foreach my $mod ($nl->top_modules_sorted) {make_sch ($mod);} |
|
|
|
sub make_sch { |
my $mod = shift; |
my $mod_name = $mod->name; |
|
my $in_count = 0; |
my $out_count = 0; |
my $in_length = 0; |
my $out_length = 0; |
|
my $color = 5; |
my $size = 10; |
|
|
open(FILE,">sch/${mod_name}.sch") or die "No sch directory"; |
|
foreach my $sig ($mod->ports_sorted) { |
|
my $dir = $sig->direction; |
my $data_type = $sig->data_type; |
my $sig_name = $sig->name; |
$data_type =~ s/reg //; |
$data_type =~ s/reg//; |
|
|
|
|
|
|
if($data_type) |
{ |
$pin_name = "$sig_name"."$data_type"; |
if("in" eq $dir) |
{ |
push(@invads,$pin_name); |
$in_count = $in_count+1; |
if( length($pin_name) > $in_length) { $in_length = length($pin_name)}; |
} |
if("out" eq $dir) |
{ |
push(@outvads,$pin_name); |
$out_count = $out_count+1; |
if( length($pin_name) > $out_length){ $out_length = length($pin_name) } |
} |
if("inout" eq $dir) |
{ |
push(@inoutvads,$pin_name); |
$in_count = $in_count+1; |
if( length($pin_name) > $in_length){ $in_length = length($pin_name) } |
} |
|
} |
else |
{ |
$pin_name = $sig_name; |
if("in" eq $dir) |
{ |
push(@inpads,$pin_name); |
$in_count = $in_count+1; |
if( length($pin_name) > $in_length){ $in_length = length($pin_name) } |
} |
if("out" eq $dir) |
{ |
push(@outpads,$pin_name); |
$out_count = $out_count+1; |
if( length($pin_name) > $out_length){ $out_length = length($pin_name) } |
} |
|
if("inout" eq $dir) |
{ |
push(@inoutpads,$pin_name); |
$in_count = $in_count+1; |
if( length($pin_name) > $in_length){ $in_length = length($pin_name) } |
} |
|
|
}; |
|
|
} |
|
my $max_pins; |
|
if($in_count > $out_count) {$max_pins = $in_count ;} else {$max_pins = $out_count ;} |
|
my $in_edg = ($in_length)*10*$size +200; |
my $in_pad = ($in_length)*10*$size +200; |
my $out_edg = ($in_length +$out_length)*10*$size +2500; |
my $out_pad = ($in_length +$out_length)*10*$size +1500; |
|
printf FILE ("v 20100214 1\n"); |
|
printf ("%s\n", $mod->name); |
|
my $pin_y = 300; |
|
while( $name =pop(@invads)) |
{ |
printf FILE ("C $in_pad $pin_y 1 0 0 ipad_2.sym \n{\nT $in_edg $pin_y $color $size 1 1 0 6 1 1\nrefdes=%s\n}\n",$name); |
$pin_y = $pin_y +400; |
} |
|
|
while( $name =pop(@inpads)) |
{ |
printf FILE ("C $in_pad $pin_y 1 0 0 ipad_1.sym \n{\nT $in_edg $pin_y $color $size 1 1 0 6 1 1 \nrefdes=%s\n}\n",$name); |
$pin_y = $pin_y +400; |
} |
|
|
|
while( $name =pop(@inoutvads)) |
{ |
printf FILE ("C $in_pad $pin_y 1 0 0 iopad_2.sym \n{\nT $in_edg $pin_y $color $size 1 1 0 6 1 1\nrefdes=%s\n}\n",$name); |
$pin_y = $pin_y +400; |
} |
|
|
while( $name =pop(@inoutpads)) |
{ |
printf FILE ("C $in_pad $pin_y 1 0 0 iopad_1.sym \n{\nT $in_edg $pin_y $color $size 1 1 0 6 1 1 \nrefdes=%s\n}\n",$name); |
$pin_y = $pin_y +400; |
} |
|
|
|
|
$pin_y = 300; |
|
while( $name =pop(@outvads)) |
{ |
printf FILE ("C $out_pad $pin_y 1 0 0 opad_2.sym\n{\nT $out_edg $pin_y $color $size 1 1 0 0 1 1 \nrefdes=%s\n}\n",$name); |
$pin_y = $pin_y +400; |
} |
|
|
while( $name =pop(@outpads)) |
{ |
printf FILE ("C $out_pad $pin_y 1 0 0 opad_1.sym\n{\nT $out_edg $pin_y $color $size 1 1 0 0 1 1\nrefdes=%s\n}\n",$name); |
$pin_y = $pin_y +400; |
} |
|
|
|
|
|
|
foreach my $cell ($mod->cells_sorted) { |
close(FILE); |
make_sch ($cell->submod, $cell->name) if $cell->submod; |
} |
} |
|
|
|
|
|
|
|
1; |
|
|
|
|
|
|
|
/projects/pic_micro/ip/soc_mouse/rtl/variants/soc_mouse_mrisc/soc_mouse_defines.v
1,3 → 1,3
`define VARIENT soc_mouse_mrisc |
`define VARIANT soc_mouse_mrisc |
`define CDE cde |
|
/projects/pic_micro/ip/soc_mouse/rtl/verilog/soc_mouse.v
3,7 → 3,7
|
|
module |
`VARIENT |
`VARIANT |
|
#( |
parameter ROM_FILE = "NONE", |
232,6 → 232,7
.wr ( wr ), |
.rd ( !wr ), |
.addr ( {1'b1,portbout} ), |
.waddr ( portbxout ), |
.wdata ( portaout ), |
.rdata ( portain ), |
.ps2_data_in ( ps2_data_pad_in ), |
/projects/pic_micro/ip/soc_mouse/doc/geda/drawing/filelist
0,0 → 1,8
`include "../../../rtl/gen/syn/soc_mouse.v" |
`include "../../../../pic16c5x/rtl/gen/syn/pic16c5x.v" |
`include "../../../../../children/logic/ip/io_module/rtl/gen/syn/io_module_mouse.v" |
`include "../../../../../children/logic/ip/ps2_interface/rtl/gen/syn/ps2_interface.v" |
`include "../../../../../children/logic/ip/uart/rtl/gen/syn/uart.v" |
`include "../../lib/cde_sram/cde_sram.v" |
`include "../../lib/cde_lifo/cde_lifo.v" |
`include "../../lib/cde_sync/cde_sync_with_hysteresis.v" |
/projects/pic_micro/ip/soc_mouse/doc/README.txt
0,0 → 1,120
|
This is a Mini-RISC CPU/Microcontroller that is mostly compatible with the |
PIC 16C57 from Microchip. |
|
|
Legal |
===== |
|
PIC, Microship, etc. are Trademarks of Microchip Technology Inc. |
|
I have no idea if implementing this core will or will not violate |
patents, copyrights or cause any other type of lawsuits. |
|
I provide this core AS IS, without any warrenties. If you decide to |
build this core, you are responsible for any legal resolutions, such |
as patents and copyrights, and perhaps others .... |
|
This source file(s) may be used and distributed without |
restriction provided that this copyright statement is not |
removed from the file and that any derivative work contains |
the original copyright notice and the associated disclaimer. |
|
THIS SOURCE FILE(S) IS/ARE PROVIDED "AS IS" AND WITHOUT ANY |
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT |
LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND |
FITNESS FOR A PARTICULAR PURPOSE. |
|
|
Motivation |
========== |
|
After seeing the "free_risc8" on the free-ip web site, I got excited |
and downloaded the core. Pretty soon I found out that it had many |
many errors and omissions from the original 16C57. So I started looking |
at the code. This is when I realized it was very badly designed and |
could not be made run faster. So, I sat down and wrote my own PIC IP |
core last night. A lot of work was spend in writing test code to ensure |
that it was 100% compatible from the software point of view. |
|
- A PIC compatible Microcontroller that runs a lot faster |
- Separate (External to the core) Program Memory |
- Options to extend the core |
|
|
Compatibility |
============= |
|
This design should be fully software compatible to the Microchip Implementation |
of the PIC 16C57, except for the following extensions: |
|
- Port A is full 8 bits wide |
- Hardware stack is 4 level deep [original 2 levels] (can be easily expanded) |
- Executions of instructions that modify the PC has become a lot more expensive |
due to the pipeline and execution of instructions on every cycle. |
Any instruction that writes to the PC (PC as destination (f), call, goto, retlw) |
now takes 4 cycles to execute (instead of 2 in the origianl implementation). |
The 4 'skip' instructions, remain as in the original implmentation: 1 cycle |
if not skipped, 2 cycles if skipped. |
- Sampling of IO ports might be off |
- Timer and watchdog might be off a few cycles |
|
|
Performance |
=========== |
|
- Single cycle instruction execution, except as noted above. |
- Here are results of some sample implementations: |
- Xilinx Spartan 2e ((Device: xc2s50e-6): Fmax: 80Mhz, Utilization: 30% |
- Xilinx Spartan2 (Device: xc2s30-6-cs144): Fmax: 50Mhz, Utilization: 66%, Ports: Tsu: 2.2nS, Tcq: 7.7nS |
- Xilinx Virtex (Device: xcv50-4-cs144) : Fmax: 40Mhz, Utilization: 35%, Ports: Tsu: 3.0nS, Tcq: 6.2nS |
- Xilinx VirtexE (Device: xcv50e-8-cs144): Fmax: 66Mhz, Utilization: 35%, Ports: Tsu: 1.7nS, Tcq: 4.5nS |
Half of the cycle time is spend in routing delays. My guess is that by placing |
proper locatiuon contrains and guiding the back-end tools, a significant |
speed improvement can be achieved .... |
- I estimat about 25K gates with the xilinx primitives, (excluding Register |
File and Programm Memory). |
|
Implementing the core |
===================== |
|
The only file you should edit if you really want to implement this core, is the |
'primitives.v' file. It contains all parts that can be optimized, depending on |
the technology used. It includes memories, and arithmetic modules. |
I added a primitives_xilinx,v file and xilinx_primitives.zip which contain |
primitives for xilinx. |
'risc_core.v' is the top level without program memory and tristate Io buffers for ports. |
This is probably a good starting point if you want to instantiate the core in to a larger |
design. If you just want a PIC clone, take a loot at 'risc_core_top.v', it was written |
with Xilinx FPGAs in mind, but should be easily addaptred to other vendors FPGAs - just |
replace the memory blocks ... |
|
To-Do |
===== |
|
Things that need to be done |
|
1) Write more test/compliance test vectors |
- Verify that all instructions after a goto/call/retlw/write to PCL are not executed |
- Verify ALU |
- Timer and Watchdog tests |
- Perhaps some other ereas ? |
|
2) Extensions ? |
- I guess this is on a "as needed" basis |
- A friend suggested to add registers that can be shared by two or more cores in a MP type configuration |
|
Author |
====== |
|
I have been doing ASIC design, verification and synthesis for over 15 years. |
This core is only a "mid-night hack", and should used with caution. |
|
I'd also like to know if anyone will actually use this core. Please send me a |
note if you will ! |
|
Rudolf Usselmann |
russelmann@hotmail.com |
|
Feel free to send me comments, suggestions and bug reports. |
|
/projects/pic_micro/ip/soc_mouse/sim/run/mouse_mrisc/TB.defs
1,9 → 1,3
`define TIMESCALE 1ns/1ns |
`timescale `TIMESCALE |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`define PERIOD 40.00000 |
|
|
`define ROM_WORDS 2048 |
`define ROM_ADDR 11 |
`define ROM_WIDTH 12 |
/projects/pic_micro/ip/soc_mouse/sim/run/mouse_mrisc/test_define
1,6 → 1,5
initial |
begin |
`TIMEFORMAT |
$display(" "); |
$display(" ==================================================="); |
$display(" Test Start"); |
/projects/pic_micro/ip/mrisc/rtl/variants/mrisc/mrisc_defines.v
1,4 → 1,4
`define VARIENT mrisc |
`define VARIANT mrisc |
`define ALU _alu |
`define PRESCLR_WDT _presclr_wdt |
`define REGISTER_FILE _register_file |
/projects/pic_micro/ip/mrisc/rtl/verilog/mrisc.v
43,7 → 43,7
|
|
module |
`VARIENT |
`VARIANT |
( |
clk, |
rst_in, |
299,7 → 299,7
|
//////////////////////////////////////////////////////////////////////// |
// Synchrounous Register File |
`VARIENT`REGISTER_FILE reg_file ( .clk( clk ), |
`VARIANT`REGISTER_FILE reg_file ( .clk( clk ), |
.rst( rst ), |
.rf_rd_bnk( rf_rd_bnk ), |
.rf_rd_addr( rf_rd_addr ), |
604,7 → 604,7
assign src1 = src1_sel ? rf_rd_data : sfr_rd_data; |
|
|
`VARIENT`ALU |
`VARIANT`ALU |
alu( |
.s1 ( src1 ), |
.s2 ( w ), |
704,7 → 704,7
always @(posedge clk) |
tmr0 <= #1 tmr0_next; |
|
`VARIENT`PRESCLR_WDT |
`VARIANT`PRESCLR_WDT |
presclr_wdt( |
.clk ( clk ), |
.rst ( rst ), |
770,7 → 770,7
assign bit_sel = src1[ instr_1[7:5] ]; |
|
|
`VARIENT`FIFO4 |
`VARIANT`FIFO4 |
#(.WIDTH(11)) |
fifo4( .clk (clk), |
.push (pc_call), |
/projects/pic_micro/ip/mrisc/rtl/verilog/mrisc_alu.v
41,7 → 41,7
`include "mrisc_defines.v" |
|
module |
`VARIENT`ALU |
`VARIANT`ALU |
( |
input wire [7:0] s1, |
input wire [7:0] s2, |
/projects/pic_micro/ip/mrisc/rtl/verilog/mrisc_fifo.v
43,7 → 43,7
`include "mrisc_defines.v" |
|
module |
`VARIENT`FIFO4 |
`VARIANT`FIFO4 |
#(parameter WIDTH=8) |
|
( |
/projects/pic_micro/ip/mrisc/rtl/verilog/mrisc_register_file.v
42,7 → 42,7
|
|
|
module `VARIENT`REGISTER_FILE( clk, rst, |
module `VARIANT`REGISTER_FILE( clk, rst, |
rf_rd_bnk, rf_rd_addr, rf_rd_data, |
rf_we, rf_wr_bnk, rf_wr_addr, rf_wr_data); |
|
/projects/pic_micro/ip/mrisc/rtl/verilog/mrisc_presclr_wdt.v
42,7 → 42,7
|
// Prescaler and Wachdog Counter |
module |
`VARIENT`PRESCLR_WDT |
`VARIANT`PRESCLR_WDT |
(clk, rst, tcki, option, tmr0_we, tmr0_cnt_en, wdt_en, wdt_clr, wdt_to); |
|
|
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sym/cde_sram.sym
0,0 → 1,62
v 20100214 1 |
B 300 0 4500 1700 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 1850 5 10 1 1 0 0 1 1 |
device=cde_sram |
T 400 2050 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=Write_Data[WIDTH-1:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=WR_Add[ADDR-1:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=RD_Add[ADDR-1:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=WR |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=RD |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=CS |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 4800 200 5100 200 10 1 1 |
{ |
T 4700 200 5 10 1 1 0 7 1 1 |
pinnumber=Read_Data[WIDTH-1:0] |
T 4700 200 5 10 0 1 0 7 1 1 |
pinseq=8 |
} |
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sym/mrisc.sym
0,0 → 1,132
v 20100214 1 |
B 300 0 3400 2300 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2450 5 10 1 1 0 0 1 1 |
device=mrisc |
T 400 2650 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=portcin[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=portbin[7:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=portain[7:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 10 1 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=inst_data[11:0] |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=wdt_en |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=tcki |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=rst_in |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 3700 200 4000 200 10 1 1 |
{ |
T 3600 200 5 10 1 1 0 7 1 1 |
pinnumber=trisc[7:0] |
T 3600 200 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
P 3700 400 4000 400 10 1 1 |
{ |
T 3600 400 5 10 1 1 0 7 1 1 |
pinnumber=trisb[7:0] |
T 3600 400 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
P 3700 600 4000 600 10 1 1 |
{ |
T 3600 600 5 10 1 1 0 7 1 1 |
pinnumber=trisa[7:0] |
T 3600 600 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 3700 800 4000 800 10 1 1 |
{ |
T 3600 800 5 10 1 1 0 7 1 1 |
pinnumber=portcout[7:0] |
T 3600 800 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
P 3700 1000 4000 1000 10 1 1 |
{ |
T 3600 1000 5 10 1 1 0 7 1 1 |
pinnumber=portbout[7:0] |
T 3600 1000 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 3700 1200 4000 1200 10 1 1 |
{ |
T 3600 1200 5 10 1 1 0 7 1 1 |
pinnumber=portaout[7:0] |
T 3600 1200 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 3700 1400 4000 1400 10 1 1 |
{ |
T 3600 1400 5 10 1 1 0 7 1 1 |
pinnumber=inst_addr[10:0] |
T 3600 1400 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
P 3700 1600 4000 1600 4 0 1 |
{ |
T 3600 1600 5 10 1 1 0 7 1 1 |
pinnumber=portc_we |
T 3700 1600 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
P 3700 1800 4000 1800 4 0 1 |
{ |
T 3600 1800 5 10 1 1 0 7 1 1 |
pinnumber=portb_we |
T 3700 1800 5 10 0 1 0 7 1 1 |
pinseq=17 |
} |
P 3700 2000 4000 2000 4 0 1 |
{ |
T 3600 2000 5 10 1 1 0 7 1 1 |
pinnumber=porta_we |
T 3700 2000 5 10 0 1 0 7 1 1 |
pinseq=18 |
} |
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sym/mrisc_alu.sym
0,0 → 1,69
v 20100214 1 |
B 300 0 2100 1300 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 1450 5 10 1 1 0 0 1 1 |
device=mrisc_alu |
T 400 1650 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=s2[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=s1[7:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=op[3:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 10 1 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=mask[7:0] |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=c_in |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 2400 200 2700 200 10 1 1 |
{ |
T 2300 200 5 10 1 1 0 7 1 1 |
pinnumber=out[7:0] |
T 2300 200 5 10 0 1 0 7 1 1 |
pinseq=6 |
} |
P 2400 400 2700 400 4 0 1 |
{ |
T 2300 400 5 10 1 1 0 7 1 1 |
pinnumber=z |
T 2400 400 5 10 0 1 0 7 1 1 |
pinseq=7 |
} |
P 2400 600 2700 600 4 0 1 |
{ |
T 2300 600 5 10 1 1 0 7 1 1 |
pinnumber=dc |
T 2400 600 5 10 0 1 0 7 1 1 |
pinseq=8 |
} |
P 2400 800 2700 800 4 0 1 |
{ |
T 2300 800 5 10 1 1 0 7 1 1 |
pinnumber=c |
T 2400 800 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sym/mrisc_register_file.sym
0,0 → 1,69
v 20100214 1 |
B 300 0 3400 1900 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2050 5 10 1 1 0 0 1 1 |
device=mrisc_register_file |
T 400 2250 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=rf_wr_data[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=rf_wr_bnk[1:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=rf_wr_addr[4:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 10 1 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=rf_rd_bnk[1:0] |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 10 1 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=rf_rd_addr[4:0] |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=rst |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=rf_we |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 3700 200 4000 200 10 1 1 |
{ |
T 3600 200 5 10 1 1 0 7 1 1 |
pinnumber=rf_rd_data[7:0] |
T 3600 200 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sym/mrisc_fifo4.sym
0,0 → 1,41
v 20100214 1 |
B 300 0 3300 1100 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 1250 5 10 1 1 0 0 1 1 |
device=mrisc_fifo4 |
T 400 1450 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=din[WIDTH-1:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=push |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=pop |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 3600 200 3900 200 10 1 1 |
{ |
T 3500 200 5 10 1 1 0 7 1 1 |
pinnumber=dout[WIDTH-1:0] |
T 3500 200 5 10 0 1 0 7 1 1 |
pinseq=5 |
} |
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sym/mrisc_presclr_wdt.sym
0,0 → 1,69
v 20100214 1 |
B 300 0 2600 1700 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 1850 5 10 1 1 0 0 1 1 |
device=mrisc_presclr_wdt |
T 400 2050 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=option[5:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=wdt_en |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=wdt_clr |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=tmr0_we |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=tcki |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=rst |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 2900 200 3200 200 4 0 1 |
{ |
T 2800 200 5 10 1 1 0 7 1 1 |
pinnumber=wdt_to |
T 2900 200 5 10 0 1 0 7 1 1 |
pinseq=8 |
} |
P 2900 400 3200 400 4 0 1 |
{ |
T 2800 400 5 10 1 1 0 7 1 1 |
pinnumber=tmr0_cnt_en |
T 2900 400 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
/projects/pic_micro/ip/mrisc/doc/geda/drawing/filelist
0,0 → 1,4
`include "../../../rtl/gen/syn/mrisc.v" |
`include "../../lib/cde_sram/cde_sram.v" |
|
|
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sch/mrisc_fifo4.sch
0,0 → 1,26
v 20100214 1 |
C 1600 300 1 0 0 ipad_2.sym |
{ |
T 1600 300 5 10 1 1 0 6 1 1 |
refdes=din[WIDTH-1:0] |
} |
C 1600 700 1 0 0 ipad_1.sym |
{ |
T 1600 700 5 10 1 1 0 6 1 1 |
refdes=push |
} |
C 1600 1100 1 0 0 ipad_1.sym |
{ |
T 1600 1100 5 10 1 1 0 6 1 1 |
refdes=pop |
} |
C 1600 1500 1 0 0 ipad_1.sym |
{ |
T 1600 1500 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 4400 300 1 0 0 opad_2.sym |
{ |
T 5400 300 5 10 1 1 0 0 1 1 |
refdes=dout[WIDTH-1:0] |
} |
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sch/mrisc_presclr_wdt.sch
0,0 → 1,46
v 20100214 1 |
C 1300 300 1 0 0 ipad_2.sym |
{ |
T 1300 300 5 10 1 1 0 6 1 1 |
refdes=option[5:0] |
} |
C 1300 700 1 0 0 ipad_1.sym |
{ |
T 1300 700 5 10 1 1 0 6 1 1 |
refdes=wdt_en |
} |
C 1300 1100 1 0 0 ipad_1.sym |
{ |
T 1300 1100 5 10 1 1 0 6 1 1 |
refdes=wdt_clr |
} |
C 1300 1500 1 0 0 ipad_1.sym |
{ |
T 1300 1500 5 10 1 1 0 6 1 1 |
refdes=tmr0_we |
} |
C 1300 1900 1 0 0 ipad_1.sym |
{ |
T 1300 1900 5 10 1 1 0 6 1 1 |
refdes=tcki |
} |
C 1300 2300 1 0 0 ipad_1.sym |
{ |
T 1300 2300 5 10 1 1 0 6 1 1 |
refdes=rst |
} |
C 1300 2700 1 0 0 ipad_1.sym |
{ |
T 1300 2700 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 3700 300 1 0 0 opad_1.sym |
{ |
T 4700 300 5 10 1 1 0 0 1 1 |
refdes=wdt_to |
} |
C 3700 700 1 0 0 opad_1.sym |
{ |
T 4700 700 5 10 1 1 0 0 1 1 |
refdes=tmr0_cnt_en |
} |
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sch/cde_sram.sch
0,0 → 1,41
v 20100214 1 |
C 2300 300 1 0 0 ipad_2.sym |
{ |
T 2300 300 5 10 1 1 0 6 1 1 |
refdes=Write_Data[WIDTH-1:0] |
} |
C 2300 700 1 0 0 ipad_2.sym |
{ |
T 2300 700 5 10 1 1 0 6 1 1 |
refdes=WR_Add[ADDR-1:0] |
} |
C 2300 1100 1 0 0 ipad_2.sym |
{ |
T 2300 1100 5 10 1 1 0 6 1 1 |
refdes=RD_Add[ADDR-1:0] |
} |
C 2300 1500 1 0 0 ipad_1.sym |
{ |
T 2300 1500 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 2300 1900 1 0 0 ipad_1.sym |
{ |
T 2300 1900 5 10 1 1 0 6 1 1 |
refdes=WR |
} |
C 2300 2300 1 0 0 ipad_1.sym |
{ |
T 2300 2300 5 10 1 1 0 6 1 1 |
refdes=RD |
} |
C 2300 2700 1 0 0 ipad_1.sym |
{ |
T 2300 2700 5 10 1 1 0 6 1 1 |
refdes=CS |
} |
C 5600 300 1 0 0 opad_2.sym |
{ |
T 6600 300 5 10 1 1 0 0 1 1 |
refdes=Read_Data[WIDTH-1:0] |
} |
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sch/mrisc.sch
0,0 → 1,91
v 20100214 1 |
C 1700 300 1 0 0 ipad_2.sym |
{ |
T 1700 300 5 10 1 1 0 6 1 1 |
refdes=portcin[7:0] |
} |
C 1700 700 1 0 0 ipad_2.sym |
{ |
T 1700 700 5 10 1 1 0 6 1 1 |
refdes=portbin[7:0] |
} |
C 1700 1100 1 0 0 ipad_2.sym |
{ |
T 1700 1100 5 10 1 1 0 6 1 1 |
refdes=portain[7:0] |
} |
C 1700 1500 1 0 0 ipad_2.sym |
{ |
T 1700 1500 5 10 1 1 0 6 1 1 |
refdes=inst_data[11:0] |
} |
C 1700 1900 1 0 0 ipad_1.sym |
{ |
T 1700 1900 5 10 1 1 0 6 1 1 |
refdes=wdt_en |
} |
C 1700 2300 1 0 0 ipad_1.sym |
{ |
T 1700 2300 5 10 1 1 0 6 1 1 |
refdes=tcki |
} |
C 1700 2700 1 0 0 ipad_1.sym |
{ |
T 1700 2700 5 10 1 1 0 6 1 1 |
refdes=rst_in |
} |
C 1700 3100 1 0 0 ipad_1.sym |
{ |
T 1700 3100 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 4500 300 1 0 0 opad_2.sym |
{ |
T 5500 300 5 10 1 1 0 0 1 1 |
refdes=trisc[7:0] |
} |
C 4500 700 1 0 0 opad_2.sym |
{ |
T 5500 700 5 10 1 1 0 0 1 1 |
refdes=trisb[7:0] |
} |
C 4500 1100 1 0 0 opad_2.sym |
{ |
T 5500 1100 5 10 1 1 0 0 1 1 |
refdes=trisa[7:0] |
} |
C 4500 1500 1 0 0 opad_2.sym |
{ |
T 5500 1500 5 10 1 1 0 0 1 1 |
refdes=portcout[7:0] |
} |
C 4500 1900 1 0 0 opad_2.sym |
{ |
T 5500 1900 5 10 1 1 0 0 1 1 |
refdes=portbout[7:0] |
} |
C 4500 2300 1 0 0 opad_2.sym |
{ |
T 5500 2300 5 10 1 1 0 0 1 1 |
refdes=portaout[7:0] |
} |
C 4500 2700 1 0 0 opad_2.sym |
{ |
T 5500 2700 5 10 1 1 0 0 1 1 |
refdes=inst_addr[10:0] |
} |
C 4500 3100 1 0 0 opad_1.sym |
{ |
T 5500 3100 5 10 1 1 0 0 1 1 |
refdes=portc_we |
} |
C 4500 3500 1 0 0 opad_1.sym |
{ |
T 5500 3500 5 10 1 1 0 0 1 1 |
refdes=portb_we |
} |
C 4500 3900 1 0 0 opad_1.sym |
{ |
T 5500 3900 5 10 1 1 0 0 1 1 |
refdes=porta_we |
} |
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sch/mrisc_alu.sch
0,0 → 1,46
v 20100214 1 |
C 1100 300 1 0 0 ipad_2.sym |
{ |
T 1100 300 5 10 1 1 0 6 1 1 |
refdes=s2[7:0] |
} |
C 1100 700 1 0 0 ipad_2.sym |
{ |
T 1100 700 5 10 1 1 0 6 1 1 |
refdes=s1[7:0] |
} |
C 1100 1100 1 0 0 ipad_2.sym |
{ |
T 1100 1100 5 10 1 1 0 6 1 1 |
refdes=op[3:0] |
} |
C 1100 1500 1 0 0 ipad_2.sym |
{ |
T 1100 1500 5 10 1 1 0 6 1 1 |
refdes=mask[7:0] |
} |
C 1100 1900 1 0 0 ipad_1.sym |
{ |
T 1100 1900 5 10 1 1 0 6 1 1 |
refdes=c_in |
} |
C 3200 300 1 0 0 opad_2.sym |
{ |
T 4200 300 5 10 1 1 0 0 1 1 |
refdes=out[7:0] |
} |
C 3200 700 1 0 0 opad_1.sym |
{ |
T 4200 700 5 10 1 1 0 0 1 1 |
refdes=z |
} |
C 3200 1100 1 0 0 opad_1.sym |
{ |
T 4200 1100 5 10 1 1 0 0 1 1 |
refdes=dc |
} |
C 3200 1500 1 0 0 opad_1.sym |
{ |
T 4200 1500 5 10 1 1 0 0 1 1 |
refdes=c |
} |
/projects/pic_micro/ip/mrisc/doc/geda/drawing/sch/mrisc_register_file.sch
0,0 → 1,46
v 20100214 1 |
C 1700 300 1 0 0 ipad_2.sym |
{ |
T 1700 300 5 10 1 1 0 6 1 1 |
refdes=rf_wr_data[7:0] |
} |
C 1700 700 1 0 0 ipad_2.sym |
{ |
T 1700 700 5 10 1 1 0 6 1 1 |
refdes=rf_wr_bnk[1:0] |
} |
C 1700 1100 1 0 0 ipad_2.sym |
{ |
T 1700 1100 5 10 1 1 0 6 1 1 |
refdes=rf_wr_addr[4:0] |
} |
C 1700 1500 1 0 0 ipad_2.sym |
{ |
T 1700 1500 5 10 1 1 0 6 1 1 |
refdes=rf_rd_bnk[1:0] |
} |
C 1700 1900 1 0 0 ipad_2.sym |
{ |
T 1700 1900 5 10 1 1 0 6 1 1 |
refdes=rf_rd_addr[4:0] |
} |
C 1700 2300 1 0 0 ipad_1.sym |
{ |
T 1700 2300 5 10 1 1 0 6 1 1 |
refdes=rst |
} |
C 1700 2700 1 0 0 ipad_1.sym |
{ |
T 1700 2700 5 10 1 1 0 6 1 1 |
refdes=rf_we |
} |
C 1700 3100 1 0 0 ipad_1.sym |
{ |
T 1700 3100 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 4500 300 1 0 0 opad_2.sym |
{ |
T 5500 300 5 10 1 1 0 0 1 1 |
refdes=rf_rd_data[7:0] |
} |
/projects/pic_micro/ip/mrisc/sim/run/rf1/TB.defs
1,8 → 1,3
`define TIMESCALE 1ns/1ns |
`timescale `TIMESCALE |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`define PERIOD 40.00000 |
|
`define ROM_WORDS 2048 |
`define ROM_ADDR 11 |
`define ROM_WIDTH 12 |
/projects/pic_micro/ip/mrisc/sim/run/rf1/test_define
2,10 → 2,7
initial |
begin |
$display ("\n\nMini-RISC. Sanity 2 Version 1.0\n\n"); |
`TIMEFORMAT |
|
$display ("========== Starting Test ========== \n"); |
cg.reset_on; |
repeat(10) @(posedge clk); |
cg.reset_off; |
|
/projects/pic_micro/ip/mrisc/sim/run/sanity1/TB.defs
1,9 → 1,3
`define TIMESCALE 1ns/1ns |
`timescale `TIMESCALE |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`define PERIOD 40.00000 |
|
|
`define ROM_WORDS 2048 |
`define ROM_ADDR 11 |
`define ROM_WIDTH 12 |
/projects/pic_micro/ip/mrisc/sim/run/sanity1/test_define
2,14 → 2,10
|
initial |
begin |
`TIMEFORMAT |
$display ("\n\nMini-RISC. Version 1.0\n\n"); |
$display ("========== Starting Sanity 1 Test ========== \n"); |
cg.reset_on; |
repeat(10) @(posedge clk); |
cg.reset_off; |
|
|
while(inst_addr != `GOOD & inst_addr != `BAD) @(posedge clk); |
|
if(inst_addr == `GOOD) |
/projects/pic_micro/ip/mrisc/sim/run/loop/TB.defs
1,8 → 1,3
`define TIMESCALE 1ns/1ns |
`timescale `TIMESCALE |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`define PERIOD 40.00000 |
|
`define ROM_WORDS 2048 |
`define ROM_ADDR 11 |
`define ROM_WIDTH 12 |
/projects/pic_micro/ip/mrisc/sim/run/loop/test_define
1,12 → 1,8
|
initial |
begin |
`TIMEFORMAT |
$display ("\n\nMini-RISC. Sanity 2 Version 1.0\n\n"); |
|
|
$display ("========== Starting Test ========== \n"); |
cg.reset_on; |
repeat(10) @(posedge clk); |
cg.reset_off; |
|
/projects/pic_micro/ip/mrisc/sim/run/rf2/TB.defs
1,9 → 1,3
`define TIMESCALE 1ns/1ns |
`timescale `TIMESCALE |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`define PERIOD 40.00000 |
|
|
`define ROM_WORDS 2048 |
`define ROM_ADDR 11 |
`define ROM_WIDTH 12 |
/projects/pic_micro/ip/mrisc/sim/run/rf2/test_define
2,10 → 2,7
initial |
begin |
$display ("\n\nMini-RISC. Sanity 2 Version 1.0\n\n"); |
`TIMEFORMAT |
|
$display ("========== Starting Test ========== \n"); |
cg.reset_on; |
repeat(10) @(posedge clk); |
cg.reset_off; |
|
/projects/pic_micro/ip/mrisc/sim/run/sanity2/TB.defs
1,9 → 1,3
`define TIMESCALE 1ns/1ns |
`timescale `TIMESCALE |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`define PERIOD 40.00000 |
|
|
`define ROM_WORDS 2048 |
`define ROM_ADDR 11 |
`define ROM_WIDTH 12 |
/projects/pic_micro/ip/mrisc/sim/run/sanity2/test_define
1,12 → 1,8
|
initial |
begin |
`TIMEFORMAT |
$display ("\n\nMini-RISC. Sanity 2 Version 1.0\n\n"); |
|
|
$display ("========== Starting Test ========== \n"); |
cg.reset_on; |
repeat(10) @(posedge clk); |
cg.reset_off; |
|
/projects/pic_micro/ip/mrisc/sim/run/rf3/TB.defs
1,8 → 1,3
`define TIMESCALE 1ns/1ns |
`timescale `TIMESCALE |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`define PERIOD 40.00000 |
|
`define ROM_WORDS 2048 |
`define ROM_ADDR 11 |
`define ROM_WIDTH 12 |
/projects/pic_micro/ip/mrisc/sim/run/rf3/test_define
2,10 → 2,7
initial |
begin |
$display ("\n\nMini-RISC. Sanity 2 Version 1.0\n\n"); |
`TIMEFORMAT |
|
$display ("========== Starting Test ========== \n"); |
cg.reset_on; |
repeat(10) @(posedge clk); |
cg.reset_off; |
|
/projects/logic/ip/ps2_interface/rtl/variants/ps2_interface/ps2_interface_defines.v
1,5 → 1,5
|
`define VARIENT ps2_interface |
`define VARIANT ps2_interface |
`define CDE cde |
|
`define FSM _fsm |
/projects/logic/ip/ps2_interface/rtl/verilog/ps2_interface.v
39,7 → 39,7
`include "ps2_interface_defines.v" |
|
|
module `VARIENT |
module `VARIANT |
#(parameter FREQ=24, // clk frequency in Mhz |
parameter CLK_HOLD_DELAY =100, // number of microsecs to hold clk before host-> device xfer |
parameter DATA_SETUP_DELAY =20, // number of microsecs to hold data startbit for host-> device xfer |
/projects/logic/ip/ps2_interface/rtl/verilog/ps2_interface_fsm.v
2,7 → 2,7
|
`include "ps2_interface_defines.v" |
|
module `VARIENT`FSM |
module `VARIANT`FSM |
#(parameter NUMBITS=11) |
|
( |
/projects/logic/ip/ps2_interface/doc/geda/drawing/sym/ps2_interface_fsm.sym
0,0 → 1,118
v 20100214 1 |
B 300 0 3600 2100 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2250 5 10 1 1 0 0 1 1 |
device=ps2_interface_fsm |
T 400 2450 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=bit_count[3:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=write |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=usec_delay_done |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=ps2_idle |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=ps2_clk_fall |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=frame0 |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=force_startbit |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 300 1800 0 1800 4 0 1 |
{ |
T 400 1800 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1800 5 10 0 1 0 1 1 1 |
pinseq=9 |
} |
P 3900 200 4200 200 4 0 1 |
{ |
T 3800 200 5 10 1 1 0 7 1 1 |
pinnumber=shift_frame |
T 3900 200 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
P 3900 400 4200 400 4 0 1 |
{ |
T 3800 400 5 10 1 1 0 7 1 1 |
pinnumber=ps2_data_oe |
T 3900 400 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 3900 600 4200 600 4 0 1 |
{ |
T 3800 600 5 10 1 1 0 7 1 1 |
pinnumber=ps2_clk_oe |
T 3900 600 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
P 3900 800 4200 800 4 0 1 |
{ |
T 3800 800 5 10 1 1 0 7 1 1 |
pinnumber=load_tx_data |
T 3900 800 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 3900 1000 4200 1000 4 0 1 |
{ |
T 3800 1000 5 10 1 1 0 7 1 1 |
pinnumber=load_rx_data |
T 3900 1000 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 3900 1200 4200 1200 4 0 1 |
{ |
T 3800 1200 5 10 1 1 0 7 1 1 |
pinnumber=enable_usec_delay |
T 3900 1200 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
P 3900 1400 4200 1400 4 0 1 |
{ |
T 3800 1400 5 10 1 1 0 7 1 1 |
pinnumber=busy |
T 3900 1400 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
/projects/logic/ip/ps2_interface/doc/geda/drawing/sym/ps2_interface.sym
0,0 → 1,132
v 20100214 1 |
B 300 0 3100 2500 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2650 5 10 1 1 0 0 1 1 |
device=ps2_interface |
T 400 2850 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=tx_data[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=write |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=ps2_data_in |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=ps2_clk_in |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=clr_rx_full |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 3400 200 3700 200 10 1 1 |
{ |
T 3300 200 5 10 1 1 0 7 1 1 |
pinnumber=rx_data[7:0] |
T 3300 200 5 10 0 1 0 7 1 1 |
pinseq=8 |
} |
P 3400 400 3700 400 4 0 1 |
{ |
T 3300 400 5 10 1 1 0 7 1 1 |
pinnumber=tx_ack_error |
T 3400 400 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
P 3400 600 3700 600 4 0 1 |
{ |
T 3300 600 5 10 1 1 0 7 1 1 |
pinnumber=rx_parity_rcv |
T 3400 600 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
P 3400 800 3700 800 4 0 1 |
{ |
T 3300 800 5 10 1 1 0 7 1 1 |
pinnumber=rx_parity_error |
T 3400 800 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 3400 1000 3700 1000 4 0 1 |
{ |
T 3300 1000 5 10 1 1 0 7 1 1 |
pinnumber=rx_parity_cal |
T 3400 1000 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
P 3400 1200 3700 1200 4 0 1 |
{ |
T 3300 1200 5 10 1 1 0 7 1 1 |
pinnumber=rx_full |
T 3400 1200 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 3400 1400 3700 1400 4 0 1 |
{ |
T 3300 1400 5 10 1 1 0 7 1 1 |
pinnumber=rx_frame_error |
T 3400 1400 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 3400 1600 3700 1600 4 0 1 |
{ |
T 3300 1600 5 10 1 1 0 7 1 1 |
pinnumber=read |
T 3400 1600 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
P 3400 1800 3700 1800 4 0 1 |
{ |
T 3300 1800 5 10 1 1 0 7 1 1 |
pinnumber=ps2_data_oe |
T 3400 1800 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
P 3400 2000 3700 2000 4 0 1 |
{ |
T 3300 2000 5 10 1 1 0 7 1 1 |
pinnumber=ps2_clk_oe |
T 3400 2000 5 10 0 1 0 7 1 1 |
pinseq=17 |
} |
P 3400 2200 3700 2200 4 0 1 |
{ |
T 3300 2200 5 10 1 1 0 7 1 1 |
pinnumber=busy |
T 3400 2200 5 10 0 1 0 7 1 1 |
pinseq=18 |
} |
/projects/logic/ip/ps2_interface/doc/geda/drawing/sym/cde_sync_with_hysteresis.sym
0,0 → 1,48
v 20100214 1 |
B 300 0 4200 900 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 1050 5 10 1 1 0 0 1 1 |
device=cde_sync_with_hysteresis |
T 400 1250 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=data_in[WIDTH-1:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 4500 200 4800 200 10 1 1 |
{ |
T 4400 200 5 10 1 1 0 7 1 1 |
pinnumber=data_rise[WIDTH-1:0] |
T 4400 200 5 10 0 1 0 7 1 1 |
pinseq=4 |
} |
P 4500 400 4800 400 10 1 1 |
{ |
T 4400 400 5 10 1 1 0 7 1 1 |
pinnumber=data_out[WIDTH-1:0] |
T 4400 400 5 10 0 1 0 7 1 1 |
pinseq=5 |
} |
P 4500 600 4800 600 10 1 1 |
{ |
T 4400 600 5 10 1 1 0 7 1 1 |
pinnumber=data_fall[WIDTH-1:0] |
T 4400 600 5 10 0 1 0 7 1 1 |
pinseq=6 |
} |
/projects/logic/ip/ps2_interface/doc/geda/drawing/filelist
0,0 → 1,2
`include "../../../rtl/gen/syn/ps2_interface.v" |
`include "../../lib/cde_sync/cde_sync_with_hysteresis.v" |
/projects/logic/ip/ps2_interface/doc/drawing/sym/ps2_interface_fsm.sym
0,0 → 1,118
v 20100214 1 |
B 300 0 3600 2100 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2250 5 10 1 1 0 0 1 1 |
device=ps2_interface_fsm |
T 400 2450 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=bit_count[3:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=write |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=usec_delay_done |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=ps2_idle |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=ps2_clk_fall |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=frame0 |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=force_startbit |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 300 1800 0 1800 4 0 1 |
{ |
T 400 1800 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1800 5 10 0 1 0 1 1 1 |
pinseq=9 |
} |
P 3900 200 4200 200 4 0 1 |
{ |
T 3800 200 5 10 1 1 0 7 1 1 |
pinnumber=shift_frame |
T 3900 200 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
P 3900 400 4200 400 4 0 1 |
{ |
T 3800 400 5 10 1 1 0 7 1 1 |
pinnumber=ps2_data_oe |
T 3900 400 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 3900 600 4200 600 4 0 1 |
{ |
T 3800 600 5 10 1 1 0 7 1 1 |
pinnumber=ps2_clk_oe |
T 3900 600 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
P 3900 800 4200 800 4 0 1 |
{ |
T 3800 800 5 10 1 1 0 7 1 1 |
pinnumber=load_tx_data |
T 3900 800 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 3900 1000 4200 1000 4 0 1 |
{ |
T 3800 1000 5 10 1 1 0 7 1 1 |
pinnumber=load_rx_data |
T 3900 1000 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 3900 1200 4200 1200 4 0 1 |
{ |
T 3800 1200 5 10 1 1 0 7 1 1 |
pinnumber=enable_usec_delay |
T 3900 1200 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
P 3900 1400 4200 1400 4 0 1 |
{ |
T 3800 1400 5 10 1 1 0 7 1 1 |
pinnumber=busy |
T 3900 1400 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
/projects/logic/ip/ps2_interface/doc/drawing/sym/ps2_interface.sym
0,0 → 1,132
v 20100214 1 |
B 300 0 3100 2500 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2650 5 10 1 1 0 0 1 1 |
device=ps2_interface |
T 400 2850 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=tx_data[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=write |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=ps2_data_in |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=ps2_clk_in |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=clr_rx_full |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 3400 200 3700 200 10 1 1 |
{ |
T 3300 200 5 10 1 1 0 7 1 1 |
pinnumber=rx_data[7:0] |
T 3300 200 5 10 0 1 0 7 1 1 |
pinseq=8 |
} |
P 3400 400 3700 400 4 0 1 |
{ |
T 3300 400 5 10 1 1 0 7 1 1 |
pinnumber=tx_ack_error |
T 3400 400 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
P 3400 600 3700 600 4 0 1 |
{ |
T 3300 600 5 10 1 1 0 7 1 1 |
pinnumber=rx_parity_rcv |
T 3400 600 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
P 3400 800 3700 800 4 0 1 |
{ |
T 3300 800 5 10 1 1 0 7 1 1 |
pinnumber=rx_parity_error |
T 3400 800 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 3400 1000 3700 1000 4 0 1 |
{ |
T 3300 1000 5 10 1 1 0 7 1 1 |
pinnumber=rx_parity_cal |
T 3400 1000 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
P 3400 1200 3700 1200 4 0 1 |
{ |
T 3300 1200 5 10 1 1 0 7 1 1 |
pinnumber=rx_full |
T 3400 1200 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 3400 1400 3700 1400 4 0 1 |
{ |
T 3300 1400 5 10 1 1 0 7 1 1 |
pinnumber=rx_frame_error |
T 3400 1400 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 3400 1600 3700 1600 4 0 1 |
{ |
T 3300 1600 5 10 1 1 0 7 1 1 |
pinnumber=read |
T 3400 1600 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
P 3400 1800 3700 1800 4 0 1 |
{ |
T 3300 1800 5 10 1 1 0 7 1 1 |
pinnumber=ps2_data_oe |
T 3400 1800 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
P 3400 2000 3700 2000 4 0 1 |
{ |
T 3300 2000 5 10 1 1 0 7 1 1 |
pinnumber=ps2_clk_oe |
T 3400 2000 5 10 0 1 0 7 1 1 |
pinseq=17 |
} |
P 3400 2200 3700 2200 4 0 1 |
{ |
T 3300 2200 5 10 1 1 0 7 1 1 |
pinnumber=busy |
T 3400 2200 5 10 0 1 0 7 1 1 |
pinseq=18 |
} |
/projects/logic/ip/ps2_interface/doc/drawing/sym/cde_sync_with_hysteresis.sym
0,0 → 1,48
v 20100214 1 |
B 300 0 4200 900 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 1050 5 10 1 1 0 0 1 1 |
device=cde_sync_with_hysteresis |
T 400 1250 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=data_in[WIDTH-1:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 4500 200 4800 200 10 1 1 |
{ |
T 4400 200 5 10 1 1 0 7 1 1 |
pinnumber=data_rise[WIDTH-1:0] |
T 4400 200 5 10 0 1 0 7 1 1 |
pinseq=4 |
} |
P 4500 400 4800 400 10 1 1 |
{ |
T 4400 400 5 10 1 1 0 7 1 1 |
pinnumber=data_out[WIDTH-1:0] |
T 4400 400 5 10 0 1 0 7 1 1 |
pinseq=5 |
} |
P 4500 600 4800 600 10 1 1 |
{ |
T 4400 600 5 10 1 1 0 7 1 1 |
pinnumber=data_fall[WIDTH-1:0] |
T 4400 600 5 10 0 1 0 7 1 1 |
pinseq=6 |
} |
/projects/logic/ip/ps2_interface/doc/drawing/sch/cde_sync_with_hysteresis.sch
0,0 → 1,31
v 20100214 1 |
C 2000 300 1 0 0 ipad_2.sym |
{ |
T 2000 300 5 10 1 1 0 6 1 1 |
refdes=data_in[WIDTH-1:0] |
} |
C 2000 700 1 0 0 ipad_1.sym |
{ |
T 2000 700 5 10 1 1 0 6 1 1 |
refdes=reset |
} |
C 2000 1100 1 0 0 ipad_1.sym |
{ |
T 2000 1100 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 5300 300 1 0 0 opad_2.sym |
{ |
T 6300 300 5 10 1 1 0 0 1 1 |
refdes=data_rise[WIDTH-1:0] |
} |
C 5300 700 1 0 0 opad_2.sym |
{ |
T 6300 700 5 10 1 1 0 0 1 1 |
refdes=data_out[WIDTH-1:0] |
} |
C 5300 1100 1 0 0 opad_2.sym |
{ |
T 6300 1100 5 10 1 1 0 0 1 1 |
refdes=data_fall[WIDTH-1:0] |
} |
/projects/logic/ip/ps2_interface/doc/drawing/sch/ps2_interface.sch
0,0 → 1,91
v 20100214 1 |
C 1400 300 1 0 0 ipad_2.sym |
{ |
T 1400 300 5 10 1 1 0 6 1 1 |
refdes=tx_data[7:0] |
} |
C 1400 700 1 0 0 ipad_1.sym |
{ |
T 1400 700 5 10 1 1 0 6 1 1 |
refdes=write |
} |
C 1400 1100 1 0 0 ipad_1.sym |
{ |
T 1400 1100 5 10 1 1 0 6 1 1 |
refdes=reset |
} |
C 1400 1500 1 0 0 ipad_1.sym |
{ |
T 1400 1500 5 10 1 1 0 6 1 1 |
refdes=ps2_data_in |
} |
C 1400 1900 1 0 0 ipad_1.sym |
{ |
T 1400 1900 5 10 1 1 0 6 1 1 |
refdes=ps2_clk_in |
} |
C 1400 2300 1 0 0 ipad_1.sym |
{ |
T 1400 2300 5 10 1 1 0 6 1 1 |
refdes=clr_rx_full |
} |
C 1400 2700 1 0 0 ipad_1.sym |
{ |
T 1400 2700 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 4200 300 1 0 0 opad_2.sym |
{ |
T 5200 300 5 10 1 1 0 0 1 1 |
refdes=rx_data[7:0] |
} |
C 4200 700 1 0 0 opad_1.sym |
{ |
T 5200 700 5 10 1 1 0 0 1 1 |
refdes=tx_ack_error |
} |
C 4200 1100 1 0 0 opad_1.sym |
{ |
T 5200 1100 5 10 1 1 0 0 1 1 |
refdes=rx_parity_rcv |
} |
C 4200 1500 1 0 0 opad_1.sym |
{ |
T 5200 1500 5 10 1 1 0 0 1 1 |
refdes=rx_parity_error |
} |
C 4200 1900 1 0 0 opad_1.sym |
{ |
T 5200 1900 5 10 1 1 0 0 1 1 |
refdes=rx_parity_cal |
} |
C 4200 2300 1 0 0 opad_1.sym |
{ |
T 5200 2300 5 10 1 1 0 0 1 1 |
refdes=rx_full |
} |
C 4200 2700 1 0 0 opad_1.sym |
{ |
T 5200 2700 5 10 1 1 0 0 1 1 |
refdes=rx_frame_error |
} |
C 4200 3100 1 0 0 opad_1.sym |
{ |
T 5200 3100 5 10 1 1 0 0 1 1 |
refdes=read |
} |
C 4200 3500 1 0 0 opad_1.sym |
{ |
T 5200 3500 5 10 1 1 0 0 1 1 |
refdes=ps2_data_oe |
} |
C 4200 3900 1 0 0 opad_1.sym |
{ |
T 5200 3900 5 10 1 1 0 0 1 1 |
refdes=ps2_clk_oe |
} |
C 4200 4300 1 0 0 opad_1.sym |
{ |
T 5200 4300 5 10 1 1 0 0 1 1 |
refdes=busy |
} |
/projects/logic/ip/ps2_interface/doc/drawing/sch/ps2_interface_fsm.sch
0,0 → 1,81
v 20100214 1 |
C 1700 300 1 0 0 ipad_2.sym |
{ |
T 1700 300 5 10 1 1 0 6 1 1 |
refdes=bit_count[3:0] |
} |
C 1700 700 1 0 0 ipad_1.sym |
{ |
T 1700 700 5 10 1 1 0 6 1 1 |
refdes=write |
} |
C 1700 1100 1 0 0 ipad_1.sym |
{ |
T 1700 1100 5 10 1 1 0 6 1 1 |
refdes=usec_delay_done |
} |
C 1700 1500 1 0 0 ipad_1.sym |
{ |
T 1700 1500 5 10 1 1 0 6 1 1 |
refdes=reset |
} |
C 1700 1900 1 0 0 ipad_1.sym |
{ |
T 1700 1900 5 10 1 1 0 6 1 1 |
refdes=ps2_idle |
} |
C 1700 2300 1 0 0 ipad_1.sym |
{ |
T 1700 2300 5 10 1 1 0 6 1 1 |
refdes=ps2_clk_fall |
} |
C 1700 2700 1 0 0 ipad_1.sym |
{ |
T 1700 2700 5 10 1 1 0 6 1 1 |
refdes=frame0 |
} |
C 1700 3100 1 0 0 ipad_1.sym |
{ |
T 1700 3100 5 10 1 1 0 6 1 1 |
refdes=force_startbit |
} |
C 1700 3500 1 0 0 ipad_1.sym |
{ |
T 1700 3500 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 4700 300 1 0 0 opad_1.sym |
{ |
T 5700 300 5 10 1 1 0 0 1 1 |
refdes=shift_frame |
} |
C 4700 700 1 0 0 opad_1.sym |
{ |
T 5700 700 5 10 1 1 0 0 1 1 |
refdes=ps2_data_oe |
} |
C 4700 1100 1 0 0 opad_1.sym |
{ |
T 5700 1100 5 10 1 1 0 0 1 1 |
refdes=ps2_clk_oe |
} |
C 4700 1500 1 0 0 opad_1.sym |
{ |
T 5700 1500 5 10 1 1 0 0 1 1 |
refdes=load_tx_data |
} |
C 4700 1900 1 0 0 opad_1.sym |
{ |
T 5700 1900 5 10 1 1 0 0 1 1 |
refdes=load_rx_data |
} |
C 4700 2300 1 0 0 opad_1.sym |
{ |
T 5700 2300 5 10 1 1 0 0 1 1 |
refdes=enable_usec_delay |
} |
C 4700 2700 1 0 0 opad_1.sym |
{ |
T 5700 2700 5 10 1 1 0 0 1 1 |
refdes=busy |
} |
/projects/logic/ip/ps2_interface/doc/copyright.v
9,7 → 9,7
// // |
// // |
// // |
// Copyright (C) <2010> <Ouabache DesignWorks> // |
// Copyright (C) <2009> <Ouabache DesignWorks> // |
// // |
// // |
// This source file may be used and distributed without // |
/projects/logic/ip/ps2_interface/sim/run/default/TB.defs
1,6 → 1,4
`define TIMESCALE 1ns/1ns |
`timescale `TIMESCALE |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`define PERIOD 40.00000 |
|
|
|
|
/projects/logic/ip/ps2_interface/sim/run/default/test_define
1,6 → 1,6
initial |
begin |
`TIMEFORMAT |
|
$display(" "); |
$display(" ==================================================="); |
$display("%8d Test Start",$realtime/`PERIOD ); |
/projects/logic/ip/disp_io/rtl/variants/disp_io/disp_io_defines.v
1,3 → 1,3
|
`define VARIENT disp_io |
`define VARIANT disp_io |
`define CDE cde |
/projects/logic/ip/disp_io/rtl/verilog/disp_io.v
47,7 → 47,7
`include "disp_io_defines.v" |
|
module |
`VARIENT |
`VARIANT |
( |
input wire clk, |
input wire reset, |
/projects/logic/ip/disp_io/doc/geda/drawing/sym/disp_io.sym
0,0 → 1,97
v 20100214 1 |
B 300 0 3500 1700 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 1850 5 10 1 1 0 0 1 1 |
device=disp_io |
T 400 2050 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=sw_pad_in[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=btn_pad_in[3:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=PosL[7:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 10 1 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=PosD[15:0] |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=one_usec |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 3800 200 4100 200 10 1 1 |
{ |
T 3700 200 5 10 1 1 0 7 1 1 |
pinnumber=seg_pad_out[6:0] |
T 3700 200 5 10 0 1 0 7 1 1 |
pinseq=8 |
} |
P 3800 400 4100 400 10 1 1 |
{ |
T 3700 400 5 10 1 1 0 7 1 1 |
pinnumber=led_pad_out[7:0] |
T 3700 400 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
P 3800 600 4100 600 10 1 1 |
{ |
T 3700 600 5 10 1 1 0 7 1 1 |
pinnumber=an_pad_out[3:0] |
T 3700 600 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
P 3800 800 4100 800 10 1 1 |
{ |
T 3700 800 5 10 1 1 0 7 1 1 |
pinnumber=PosS[7:0] |
T 3700 800 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 3800 1000 4100 1000 10 1 1 |
{ |
T 3700 1000 5 10 1 1 0 7 1 1 |
pinnumber=PosB[3:0] |
T 3700 1000 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
P 3800 1200 4100 1200 4 0 1 |
{ |
T 3700 1200 5 10 1 1 0 7 1 1 |
pinnumber=dp_pad_out |
T 3800 1200 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
/projects/logic/ip/disp_io/doc/geda/drawing/filelist
0,0 → 1,3
|
`include "../../../rtl/gen/syn/disp_io.v" |
|
/projects/logic/ip/disp_io/sim/run/default/TB.defs
1,5 → 1,2
`define TIMESCALE 1ns/1ns |
`timescale `TIMESCALE |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`define PERIOD 20.00000 |
|
/projects/logic/ip/disp_io/sim/run/default/test_define
1,6 → 1,5
initial |
begin |
`TIMEFORMAT |
$display(" "); |
$display(" ==================================================="); |
$display("%t Test Start",$realtime); |
12,8 → 11,6
sw_pad_in = 8'b00000000; |
btn_pad_in = 4'b0000; |
|
|
|
cg.next(8); |
cg.reset_off; |
cg.next(88); |
/projects/logic/ip/uart/rtl/variants/uart/uart_defines.v
1,5 → 1,5
|
`define VARIENT uart |
`define VARIANT uart |
`define CDE cde |
|
`define BAUDGEN _baudgen |
/projects/logic/ip/uart/rtl/verilog/uart.v
34,8 → 34,10
|
|
module |
`VARIENT |
#(parameter PRESCALE=5'b01100 ,SIZE=8 ,HAS_PARITY=1 ) |
`VARIANT |
#(parameter PRESCALE=5'b01100, |
parameter SIZE=8, |
parameter HAS_PARITY=1 ) |
|
|
( |
44,24 → 46,24
|
input wire cts_pad_in, |
output reg rts_pad_out, |
|
output wire txd_pad_out, |
input wire rxd_pad_in, |
|
output reg cts_out, |
input wire rts_in, |
|
input wire parity, |
input wire force_parity, |
|
input wire txd_parity, |
input wire txd_force_parity, |
input wire txd_load, |
input wire txd_break, |
input wire [SIZE-1:0] txd_data_in, |
output wire txd_buffer_empty, |
|
output wire txd_pad_out, |
|
input wire rxd_pad_in, |
input wire rxd_parity, |
input wire rxd_force_parity, |
output wire [SIZE-1:0] rxd_data_out, |
output wire rxd_buffer_full, |
output wire rxd_parity, |
output wire rxd_parity_error, |
output wire rxd_stop_error |
); |
78,8 → 80,8
begin |
|
|
$display("%t %m Received %h parity %b stop error %b parity error %b", |
$realtime,rxd_data_out, rxd_parity, rxd_stop_error,rxd_parity_error ); |
$display("%t %m Received %h stop error %b parity error %b", |
$realtime,rxd_data_out, rxd_stop_error,rxd_parity_error ); |
end |
|
always@(negedge txd_load) |
88,23 → 90,14
if(!reset) |
begin |
$display("%t %m Sending %h parity %b ", |
$realtime,txd_data_in,parity ); |
$realtime,txd_data_in,txd_parity ); |
end |
|
end |
|
|
|
|
|
|
|
`endif |
|
|
|
|
|
|
|
always@(posedge clk) |
117,7 → 110,7
|
|
|
`VARIENT`BAUDGEN |
`VARIANT`BAUDGEN |
#(.PRESCALE(PRESCALE)) |
baudgen ( |
.clk (clk), |
126,36 → 119,35
); |
|
|
`VARIENT`XMIT |
`VARIANT`XMIT |
#(.SIZE(SIZE)) |
uart_xmit ( |
.clk (clk), |
.reset (reset), |
.parity (parity), |
.force_parity (force_parity), |
.baud_clk (baud_clk), |
.txd_load (txd_load), |
.txd_break (txd_break), |
.txd_data_in (txd_data_in), |
.txd_buffer_empty (txd_buffer_empty), |
.txd_pad_out (txd_pad_out) |
.clk ( clk ), |
.reset ( reset ), |
.baud_clk ( baud_clk ), |
.parity ( txd_parity ), |
.force_parity ( txd_force_parity ), |
.txd_load ( txd_load ), |
.txd_break ( txd_break ), |
.txd_data_in ( txd_data_in ), |
.txd_buffer_empty ( txd_buffer_empty ), |
.txd_pad_out ( txd_pad_out ) |
); |
|
`VARIENT`RCVR |
`VARIANT`RCVR |
#(.HAS_PARITY(HAS_PARITY), |
.SIZE(SIZE)) |
uart_rcvr ( |
.clk (clk), |
.reset (reset), |
.baud_clk (baud_clk), |
.parity (parity), |
.force_parity (force_parity), |
.rxd_pad_in (rxd_pad_in), |
.rxd_data_out (rxd_data_out), |
.rxd_buffer_full (rxd_buffer_full), |
.rxd_parity (rxd_parity), |
.rxd_parity_error (rxd_parity_error), |
.rxd_stop_error (rxd_stop_error) |
.clk ( clk ), |
.reset ( reset ), |
.baud_clk ( baud_clk ), |
.parity ( rxd_parity ), |
.force_parity ( rxd_force_parity ), |
.rxd_pad_in ( rxd_pad_in ), |
.rxd_data_out ( rxd_data_out ), |
.rxd_buffer_full ( rxd_buffer_full ), |
.rxd_parity_error ( rxd_parity_error ), |
.rxd_stop_error ( rxd_stop_error ) |
); |
|
|
/projects/logic/ip/uart/rtl/verilog/uart_xmit.v
32,7 → 32,7
//* |
//*--------------------------------------------------------------------- |
module |
`VARIENT`XMIT |
`VARIANT`XMIT |
#(parameter SIZE=8 ) |
|
|
/projects/logic/ip/uart/rtl/verilog/uart_baudgen.v
32,7 → 32,7
//* |
//*--------------------------------------------------------------------- |
module |
`VARIENT`BAUDGEN |
`VARIANT`BAUDGEN |
#(parameter PRESCALE=5'b01100 ) |
( |
input wire clk, |
/projects/logic/ip/uart/rtl/verilog/uart_rcvr.v
32,7 → 32,7
//* |
//*--------------------------------------------------------------------- |
module |
`VARIENT`RCVR |
`VARIANT`RCVR |
#(parameter SIZE=8 ,HAS_PARITY=1 ) |
( |
input wire clk, |
45,7 → 45,6
input wire rxd_pad_in, |
output reg [SIZE-1:0] rxd_data_out, |
output reg rxd_buffer_full, |
output reg rxd_parity, |
output reg rxd_parity_error, |
output reg rxd_stop_error |
); |
59,7 → 58,8
reg [SIZE-1:0] rxd_shifter; |
reg [3:0] rxd_shifter_cnt; |
reg rxd_pad_sig; |
|
reg rxd_parity_cal; |
|
reg rxd_data_shifting; |
|
|
150,7 → 150,7
rxd_data_out <= rxd_shifter[8-1:0]; |
rxd_buffer_full <= 1'b1; |
rxd_stop_error <= !rxd_pad_sig; |
rxd_parity_error <= rxd_parity; |
rxd_parity_error <= rxd_parity_cal; |
end |
else |
begin |
166,14 → 166,14
|
|
always@(posedge clk) |
if(reset) rxd_parity <= 1'b0; |
if(reset) rxd_parity_cal <= 1'b0; |
else |
if(!rxd_baud_clk) rxd_parity <= rxd_parity; |
if(!rxd_baud_clk) rxd_parity_cal <= rxd_parity_cal; |
else |
if(force_parity ||(rxd_shifter_cnt == 0)) rxd_parity <= parity; |
if(force_parity ||(rxd_shifter_cnt == 0)) rxd_parity_cal <= parity; |
else |
if(rxd_shifter_cnt <= 8+1 ) rxd_parity <= rxd_parity ^ rxd_pad_sig; |
else rxd_parity <= rxd_parity; |
if(rxd_shifter_cnt <= 8+1 ) rxd_parity_cal <= rxd_parity_cal ^ rxd_pad_sig; |
else rxd_parity_cal <= rxd_parity_cal; |
|
|
|
/projects/logic/ip/uart/doc/geda/drawing/sym/uart.sym
0,0 → 1,146
v 20100214 1 |
B 300 0 4700 2700 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2850 5 10 1 1 0 0 1 1 |
device=uart |
T 400 3050 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=txd_data_in[SIZE-1:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=txd_parity |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=txd_load |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=txd_force_parity |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=txd_break |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=rxd_parity |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=rxd_pad_in |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=rxd_force_parity |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 300 1800 0 1800 4 0 1 |
{ |
T 400 1800 5 10 1 1 0 1 1 1 |
pinnumber=rts_in |
T 400 1800 5 10 0 1 0 1 1 1 |
pinseq=9 |
} |
P 300 2000 0 2000 4 0 1 |
{ |
T 400 2000 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 2000 5 10 0 1 0 1 1 1 |
pinseq=10 |
} |
P 300 2200 0 2200 4 0 1 |
{ |
T 400 2200 5 10 1 1 0 1 1 1 |
pinnumber=cts_pad_in |
T 400 2200 5 10 0 1 0 1 1 1 |
pinseq=11 |
} |
P 300 2400 0 2400 4 0 1 |
{ |
T 400 2400 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 2400 5 10 0 1 0 1 1 1 |
pinseq=12 |
} |
P 5000 200 5300 200 10 1 1 |
{ |
T 4900 200 5 10 1 1 0 7 1 1 |
pinnumber=rxd_data_out[SIZE-1:0] |
T 4900 200 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 5000 400 5300 400 4 0 1 |
{ |
T 4900 400 5 10 1 1 0 7 1 1 |
pinnumber=txd_pad_out |
T 5000 400 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 5000 600 5300 600 4 0 1 |
{ |
T 4900 600 5 10 1 1 0 7 1 1 |
pinnumber=txd_buffer_empty |
T 5000 600 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
P 5000 800 5300 800 4 0 1 |
{ |
T 4900 800 5 10 1 1 0 7 1 1 |
pinnumber=rxd_stop_error |
T 5000 800 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
P 5000 1000 5300 1000 4 0 1 |
{ |
T 4900 1000 5 10 1 1 0 7 1 1 |
pinnumber=rxd_parity_error |
T 5000 1000 5 10 0 1 0 7 1 1 |
pinseq=17 |
} |
P 5000 1200 5300 1200 4 0 1 |
{ |
T 4900 1200 5 10 1 1 0 7 1 1 |
pinnumber=rxd_buffer_full |
T 5000 1200 5 10 0 1 0 7 1 1 |
pinseq=18 |
} |
P 5000 1400 5300 1400 4 0 1 |
{ |
T 4900 1400 5 10 1 1 0 7 1 1 |
pinnumber=rts_pad_out |
T 5000 1400 5 10 0 1 0 7 1 1 |
pinseq=19 |
} |
P 5000 1600 5300 1600 4 0 1 |
{ |
T 4900 1600 5 10 1 1 0 7 1 1 |
pinnumber=cts_out |
T 5000 1600 5 10 0 1 0 7 1 1 |
pinseq=20 |
} |
/projects/logic/ip/uart/doc/geda/drawing/sym/uart_xmit.sym
0,0 → 1,76
v 20100214 1 |
B 300 0 4100 1900 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2050 5 10 1 1 0 0 1 1 |
device=uart_xmit |
T 400 2250 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=txd_data_in[SIZE-1:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=txd_load |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=txd_break |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=parity |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=force_parity |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=baud_clk |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 4400 200 4700 200 4 0 1 |
{ |
T 4300 200 5 10 1 1 0 7 1 1 |
pinnumber=txd_pad_out |
T 4400 200 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
P 4400 400 4700 400 4 0 1 |
{ |
T 4300 400 5 10 1 1 0 7 1 1 |
pinnumber=txd_buffer_empty |
T 4400 400 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
/projects/logic/ip/uart/doc/geda/drawing/sym/uart_baudgen.sym
0,0 → 1,27
v 20100214 1 |
B 300 0 2100 700 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 850 5 10 1 1 0 0 1 1 |
device=uart_baudgen |
T 400 1050 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 4 0 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 2400 200 2700 200 4 0 1 |
{ |
T 2300 200 5 10 1 1 0 7 1 1 |
pinnumber=baud_clk_out |
T 2400 200 5 10 0 1 0 7 1 1 |
pinseq=3 |
} |
/projects/logic/ip/uart/doc/geda/drawing/sym/uart_rcvr.sym
0,0 → 1,76
v 20100214 1 |
B 300 0 3800 1500 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 1650 5 10 1 1 0 0 1 1 |
device=uart_rcvr |
T 400 1850 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 4 0 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=rxd_pad_in |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=parity |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=force_parity |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=baud_clk |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 4100 200 4400 200 10 1 1 |
{ |
T 4000 200 5 10 1 1 0 7 1 1 |
pinnumber=rxd_data_out[SIZE-1:0] |
T 4000 200 5 10 0 1 0 7 1 1 |
pinseq=7 |
} |
P 4100 400 4400 400 4 0 1 |
{ |
T 4000 400 5 10 1 1 0 7 1 1 |
pinnumber=rxd_stop_error |
T 4100 400 5 10 0 1 0 7 1 1 |
pinseq=8 |
} |
P 4100 600 4400 600 4 0 1 |
{ |
T 4000 600 5 10 1 1 0 7 1 1 |
pinnumber=rxd_parity_error |
T 4100 600 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
P 4100 800 4400 800 4 0 1 |
{ |
T 4000 800 5 10 1 1 0 7 1 1 |
pinnumber=rxd_buffer_full |
T 4100 800 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
/projects/logic/ip/uart/doc/geda/drawing/filelist
0,0 → 1,3
|
`include "../../../rtl/gen/syn/uart.v" |
|
/projects/logic/ip/uart/doc/geda/drawing/sch/uart_rcvr.sch
0,0 → 1,51
v 20100214 1 |
C 1400 300 1 0 0 ipad_1.sym |
{ |
T 1400 300 5 10 1 1 0 6 1 1 |
refdes=rxd_pad_in |
} |
C 1400 700 1 0 0 ipad_1.sym |
{ |
T 1400 700 5 10 1 1 0 6 1 1 |
refdes=reset |
} |
C 1400 1100 1 0 0 ipad_1.sym |
{ |
T 1400 1100 5 10 1 1 0 6 1 1 |
refdes=parity |
} |
C 1400 1500 1 0 0 ipad_1.sym |
{ |
T 1400 1500 5 10 1 1 0 6 1 1 |
refdes=force_parity |
} |
C 1400 1900 1 0 0 ipad_1.sym |
{ |
T 1400 1900 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 1400 2300 1 0 0 ipad_1.sym |
{ |
T 1400 2300 5 10 1 1 0 6 1 1 |
refdes=baud_clk |
} |
C 4900 300 1 0 0 opad_2.sym |
{ |
T 5900 300 5 10 1 1 0 0 1 1 |
refdes=rxd_data_out[SIZE-1:0] |
} |
C 4900 700 1 0 0 opad_1.sym |
{ |
T 5900 700 5 10 1 1 0 0 1 1 |
refdes=rxd_stop_error |
} |
C 4900 1100 1 0 0 opad_1.sym |
{ |
T 5900 1100 5 10 1 1 0 0 1 1 |
refdes=rxd_parity_error |
} |
C 4900 1500 1 0 0 opad_1.sym |
{ |
T 5900 1500 5 10 1 1 0 0 1 1 |
refdes=rxd_buffer_full |
} |
/projects/logic/ip/uart/doc/geda/drawing/sch/uart.sch
0,0 → 1,101
v 20100214 1 |
C 2300 300 1 0 0 ipad_2.sym |
{ |
T 2300 300 5 10 1 1 0 6 1 1 |
refdes=txd_data_in[SIZE-1:0] |
} |
C 2300 700 1 0 0 ipad_1.sym |
{ |
T 2300 700 5 10 1 1 0 6 1 1 |
refdes=txd_parity |
} |
C 2300 1100 1 0 0 ipad_1.sym |
{ |
T 2300 1100 5 10 1 1 0 6 1 1 |
refdes=txd_load |
} |
C 2300 1500 1 0 0 ipad_1.sym |
{ |
T 2300 1500 5 10 1 1 0 6 1 1 |
refdes=txd_force_parity |
} |
C 2300 1900 1 0 0 ipad_1.sym |
{ |
T 2300 1900 5 10 1 1 0 6 1 1 |
refdes=txd_break |
} |
C 2300 2300 1 0 0 ipad_1.sym |
{ |
T 2300 2300 5 10 1 1 0 6 1 1 |
refdes=rxd_parity |
} |
C 2300 2700 1 0 0 ipad_1.sym |
{ |
T 2300 2700 5 10 1 1 0 6 1 1 |
refdes=rxd_pad_in |
} |
C 2300 3100 1 0 0 ipad_1.sym |
{ |
T 2300 3100 5 10 1 1 0 6 1 1 |
refdes=rxd_force_parity |
} |
C 2300 3500 1 0 0 ipad_1.sym |
{ |
T 2300 3500 5 10 1 1 0 6 1 1 |
refdes=rts_in |
} |
C 2300 3900 1 0 0 ipad_1.sym |
{ |
T 2300 3900 5 10 1 1 0 6 1 1 |
refdes=reset |
} |
C 2300 4300 1 0 0 ipad_1.sym |
{ |
T 2300 4300 5 10 1 1 0 6 1 1 |
refdes=cts_pad_in |
} |
C 2300 4700 1 0 0 ipad_1.sym |
{ |
T 2300 4700 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 5800 300 1 0 0 opad_2.sym |
{ |
T 6800 300 5 10 1 1 0 0 1 1 |
refdes=rxd_data_out[SIZE-1:0] |
} |
C 5800 700 1 0 0 opad_1.sym |
{ |
T 6800 700 5 10 1 1 0 0 1 1 |
refdes=txd_pad_out |
} |
C 5800 1100 1 0 0 opad_1.sym |
{ |
T 6800 1100 5 10 1 1 0 0 1 1 |
refdes=txd_buffer_empty |
} |
C 5800 1500 1 0 0 opad_1.sym |
{ |
T 6800 1500 5 10 1 1 0 0 1 1 |
refdes=rxd_stop_error |
} |
C 5800 1900 1 0 0 opad_1.sym |
{ |
T 6800 1900 5 10 1 1 0 0 1 1 |
refdes=rxd_parity_error |
} |
C 5800 2300 1 0 0 opad_1.sym |
{ |
T 6800 2300 5 10 1 1 0 0 1 1 |
refdes=rxd_buffer_full |
} |
C 5800 2700 1 0 0 opad_1.sym |
{ |
T 6800 2700 5 10 1 1 0 0 1 1 |
refdes=rts_pad_out |
} |
C 5800 3100 1 0 0 opad_1.sym |
{ |
T 6800 3100 5 10 1 1 0 0 1 1 |
refdes=cts_out |
} |
/projects/logic/ip/uart/doc/geda/drawing/sch/uart_xmit.sch
0,0 → 1,51
v 20100214 1 |
C 2300 300 1 0 0 ipad_2.sym |
{ |
T 2300 300 5 10 1 1 0 6 1 1 |
refdes=txd_data_in[SIZE-1:0] |
} |
C 2300 700 1 0 0 ipad_1.sym |
{ |
T 2300 700 5 10 1 1 0 6 1 1 |
refdes=txd_load |
} |
C 2300 1100 1 0 0 ipad_1.sym |
{ |
T 2300 1100 5 10 1 1 0 6 1 1 |
refdes=txd_break |
} |
C 2300 1500 1 0 0 ipad_1.sym |
{ |
T 2300 1500 5 10 1 1 0 6 1 1 |
refdes=reset |
} |
C 2300 1900 1 0 0 ipad_1.sym |
{ |
T 2300 1900 5 10 1 1 0 6 1 1 |
refdes=parity |
} |
C 2300 2300 1 0 0 ipad_1.sym |
{ |
T 2300 2300 5 10 1 1 0 6 1 1 |
refdes=force_parity |
} |
C 2300 2700 1 0 0 ipad_1.sym |
{ |
T 2300 2700 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 2300 3100 1 0 0 ipad_1.sym |
{ |
T 2300 3100 5 10 1 1 0 6 1 1 |
refdes=baud_clk |
} |
C 5200 300 1 0 0 opad_1.sym |
{ |
T 6200 300 5 10 1 1 0 0 1 1 |
refdes=txd_pad_out |
} |
C 5200 700 1 0 0 opad_1.sym |
{ |
T 6200 700 5 10 1 1 0 0 1 1 |
refdes=txd_buffer_empty |
} |
/projects/logic/ip/uart/doc/geda/drawing/sch/uart_baudgen.sch
0,0 → 1,16
v 20100214 1 |
C 700 300 1 0 0 ipad_1.sym |
{ |
T 700 300 5 10 1 1 0 6 1 1 |
refdes=reset |
} |
C 700 700 1 0 0 ipad_1.sym |
{ |
T 700 700 5 10 1 1 0 6 1 1 |
refdes=clk |
} |
C 3200 300 1 0 0 opad_1.sym |
{ |
T 4200 300 5 10 1 1 0 0 1 1 |
refdes=baud_clk_out |
} |
/projects/logic/ip/uart/doc/copyright.v
9,7 → 9,7
// // |
// // |
// // |
// Copyright (C) <2010> <Ouabache DesignWorks> // |
// Copyright (C) <2009> <Ouabache DesignWorks> // |
// // |
// // |
// This source file may be used and distributed without // |
/projects/logic/ip/uart/sim/run/default/TB.defs
1,6 → 1,3
`define TIMESCALE 1ns/1ns |
`timescale `TIMESCALE |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`define PERIOD 41.6666667 |
|
|
/projects/logic/ip/uart/sim/run/default/test_define
2,7 → 2,6
|
initial |
begin |
`TIMEFORMAT |
$display(" "); |
$display(" ==================================================="); |
$display("%t Start Test ",$realtime ); |
9,6 → 8,8
$display(" ==================================================="); |
$display(" "); |
|
parity = 1'b0; |
force_parity = 1'b0; |
false_start = 1'bz; |
|
fork |
/projects/logic/ip/uart/sim/run/default/dut
17,6 → 17,9
reg now_load; |
reg ready_load; |
|
reg parity; |
reg force_parity; |
|
assign txmit_serial = false_start; |
|
|
26,8 → 29,8
dut( |
.clk (clk), |
.reset (reset), |
.parity (1'b0), |
.force_parity (1'b0), |
.txd_parity (parity), |
.txd_force_parity (force_parity), |
.txd_data_in (txmit_data_in), |
.txd_buffer_empty (txmit_buffer_empty), |
.txd_load (txmit_load), |
34,10 → 37,11
.txd_break (txd_break), |
.txd_pad_out (txmit_serial), |
.rxd_pad_in (txmit_serial), |
.rxd_parity (parity), |
.rxd_force_parity (force_parity), |
.rxd_data_out (rcv_buffer), |
.rxd_buffer_full (rcv_buffer_full), |
.rxd_stop_error (rxd_stop_error), |
.rxd_parity (rxd_parity), |
.rxd_parity_error (rxd_parity_error), |
.cts_pad_in (1'b0), |
.rts_pad_out (), |
78,8 → 82,8
ua2( |
.clk (clk), |
.reset (reset), |
.parity (1'b0), |
.force_parity (1'b0), |
.txd_parity (1'b0), |
.txd_force_parity (1'b0), |
.txd_data_in (data), |
.txd_buffer_empty (), |
.txd_load (now_load), |
87,9 → 91,10
.txd_pad_out (serial), |
.rxd_pad_in (txmit_serial), |
.rxd_data_out (data), |
.rxd_parity (1'b0), |
.rxd_force_parity (1'b0), |
.rxd_buffer_full (load), |
.rxd_stop_error (load_error), |
.rxd_parity (), |
.rxd_parity_error (), |
.cts_pad_in (1'b0), |
.rts_pad_out (), |
/projects/logic/ip/io_module/rtl/variants/io_module_mouse/io_module_defines.v
1,4 → 1,4
`define VARIENT io_module_mouse |
`define VARIANT io_module_mouse |
|
`define UART _uart |
`define PS2 _ps2 |
/projects/logic/ip/io_module/rtl/variants/io_module/io_module_defines.v
1,5 → 1,5
|
`define VARIENT io_module |
`define VARIANT io_module |
`define TIMER _timer |
`define GPIO _gpio |
`define UART _uart |
/projects/logic/ip/io_module/rtl/verilog/io_module.v
1,7 → 1,7
`include "io_module_defines" |
|
|
module `VARIENT |
module `VARIANT |
#( |
parameter BASE_ADDR = 8'h80, |
parameter BASE_WIDTH = 8, |
11,27 → 11,30
) |
( |
|
input wire clk, |
input wire reset, |
input wire enable, |
input wire clk, |
input wire reset, |
input wire enable, |
|
input wire wr, |
input wire rd, |
input wire [ADDR_WIDTH-1:0] addr, |
input wire [7:0] wdata, |
output wire [7:0] rdata |
input wire wr, |
input wire rd, |
input wire [ADDR_WIDTH-1:0] addr, |
|
|
input wire [ADDR_WIDTH-BASE_WIDTH-1:0] waddr, |
input wire [7:0] wdata, |
output wire [7:0] rdata |
|
`ifdef GPIO |
, |
output wire [7:0] gpio_0_out , |
output wire [7:0] gpio_0_oe , |
output wire [7:0] gpio_0_lat , |
input wire [7:0] gpio_0_in , |
output wire [7:0] gpio_0_out, |
output wire [7:0] gpio_0_oe, |
output wire [7:0] gpio_0_lat, |
input wire [7:0] gpio_0_in, |
|
output wire [7:0] gpio_1_out , |
output wire [7:0] gpio_1_oe , |
output wire [7:0] gpio_1_lat , |
input wire [7:0] gpio_1_in |
output wire [7:0] gpio_1_out, |
output wire [7:0] gpio_1_oe, |
output wire [7:0] gpio_1_lat, |
input wire [7:0] gpio_1_in |
|
`endif // `ifdef GPIO |
|
39,7 → 42,7
`ifdef TIMER |
|
, |
output wire [1:0] timer_irq |
output wire [1:0] timer_irq |
|
`endif |
|
50,37 → 53,37
`ifdef PIC |
|
, |
output wire pic_irq, |
output wire pic_nmi, |
input wire [7:0] ext_irq_in |
output wire pic_irq, |
output wire pic_nmi, |
input wire [7:0] ext_irq_in |
|
`endif |
|
`ifdef UART |
, |
output wire txd_pad_out, |
input wire rxd_pad_in, |
input wire cts_pad_in, |
output wire rts_pad_out, |
output wire rx_irq, |
output wire tx_irq |
output wire txd_pad_out, |
input wire rxd_pad_in, |
input wire cts_pad_in, |
output wire rts_pad_out, |
output wire rx_irq, |
output wire tx_irq |
`endif |
|
`ifdef PS2 |
, |
output wire ps2_clk_oe, |
input wire ps2_clk_in, |
output wire ps2_data_oe, |
input wire ps2_data_in, |
output wire ps2_data_avail, |
output wire ps2_clk_oe, |
input wire ps2_clk_in, |
output wire ps2_data_oe, |
input wire ps2_data_in, |
output wire ps2_data_avail, |
|
|
output wire [9:0] y_pos, |
output wire [9:0] x_pos, |
output wire new_packet, |
output wire ms_mid, |
output wire ms_right, |
output wire ms_left |
output wire [9:0] y_pos, |
output wire [9:0] x_pos, |
output wire new_packet, |
output wire ms_mid, |
output wire ms_right, |
output wire ms_left |
|
|
|
127,7 → 130,7
|
`ifdef GPIO |
|
`VARIENT`GPIO |
`VARIANT`GPIO |
#(.BASE_ADDR(4'h0), |
.BASE_WIDTH(4), |
.ADDR_WIDTH(8) |
139,7 → 142,8
.cs ( cs ), |
.wr ( wr && enable ), |
.rd ( rd ), |
.addr ( addr[7:0] ), |
.waddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.raddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.wdata ( wdata ), |
.rdata ( gpio_rdata ), |
.gpio_0_out ( gpio_0_out ), |
162,7 → 166,7
|
`ifdef TIMER |
|
`VARIENT`TIMER |
`VARIANT`TIMER |
#(.BASE_ADDR(4'h1), |
.BASE_WIDTH(4), |
.ADDR_WIDTH(8) |
174,7 → 178,8
.cs ( cs ), |
.wr ( wr && enable ), |
.rd ( rd ), |
.addr ( addr[7:0] ), |
.waddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.raddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.wdata ( wdata ), |
.rdata ( timer_rdata ), |
.irq ( timer_irq ) |
193,7 → 198,7
|
|
|
`VARIENT`UART |
`VARIANT`UART |
#(.BASE_ADDR(4'h2), |
.BASE_WIDTH(4), |
.ADDR_WIDTH(8) |
205,7 → 210,8
.cs ( cs ), |
.wr ( wr && enable ), |
.rd ( rd ), |
.addr ( addr[7:0] ), |
.waddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.raddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.wdata ( wdata ), |
.rdata ( uart_rdata ), |
.txd_pad_out ( txd_pad_out ), |
230,7 → 236,7
|
|
|
`VARIENT`PIC |
`VARIANT`PIC |
#(.BASE_ADDR(4'h3), |
.BASE_WIDTH(4), |
.ADDR_WIDTH(8), |
244,7 → 250,8
.cs ( cs ), |
.wr ( wr && enable ), |
.rd ( rd ), |
.addr ( addr[7:0] ), |
.waddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.raddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.wdata ( wdata ), |
.rdata ( pic_rdata ), |
.int_in ( ext_irq_in ), |
264,7 → 271,7
`ifdef PS2 |
|
|
`VARIENT`PS2 |
`VARIANT`PS2 |
#(.BASE_ADDR(4'h4), |
.BASE_WIDTH(4), |
.ADDR_WIDTH(8) |
276,7 → 283,8
.cs ( cs && enable ), |
.wr ( wr ), |
.rd ( rd ), |
.addr ( addr[7:0] ), |
.waddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.raddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.wdata ( wdata ), |
.rdata ( ps2_rdata ), |
.rcv_data_avail ( ps2_data_avail ), |
306,7 → 314,7
`ifdef UTIMER |
|
|
`VARIENT`UTIMER |
`VARIANT`UTIMER |
#(.BASE_ADDR(4'h5), |
.BASE_WIDTH(4), |
.ADDR_WIDTH(8) |
318,7 → 326,8
.cs ( cs ), |
.wr ( wr && enable ), |
.rd ( rd ), |
.addr ( addr[7:0] ), |
.waddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.raddr ( addr[ADDR_WIDTH-BASE_WIDTH-1:0] ), |
.wdata ( wdata ), |
.rdata ( utim_rdata ) |
|
/projects/logic/ip/io_module/rtl/verilog/io_module_timer.v
3,7 → 3,7
`ifdef TIMER |
|
|
module `VARIENT`TIMER |
module `VARIANT`TIMER |
#(parameter BASE_ADDR = 4'h0, |
parameter BASE_WIDTH = 4, |
parameter ADDR_WIDTH = 8, |
15,7 → 15,9
input wire cs, |
input wire wr, |
input wire rd, |
input wire [ADDR_WIDTH-1:0] addr, |
input wire [ADDR_WIDTH-1:0] waddr, |
input wire [ADDR_WIDTH-1:0] raddr, |
|
input wire [7:0] wdata, |
output reg [7:0] rdata, |
output reg [TIMERS-1:0] irq |
44,15 → 46,15
|
|
|
reg as; |
reg was; |
reg ras; |
|
|
always@(*) was = (waddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
always@(*) ras = (raddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
|
always@(addr) as = (addr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
|
|
|
|
reg [7:0] count_0; |
reg [2:0] state_0; |
|
61,9 → 63,9
|
|
always@(*) |
if(rd && cs && as) |
if(rd && cs && ras) |
begin |
case(addr[3:0]) |
case(raddr[3:0]) |
TIMER_0_START: rdata = {4'h0,irq,state_0[2:0]}; |
TIMER_0_COUNT: rdata = count_0[7:0]; |
TIMER_1_START: rdata = {4'h0,irq,state_1[2:0]}; |
102,7 → 104,7
case (state_0) |
(IDLE): |
|
if(wr && as && cs && addr[3:0] == TIMER_0_START) |
if(wr && was && cs && waddr[3:0] == TIMER_0_START) |
begin |
state_0 <= RUNNING; |
count_0 <= wdata; |
126,7 → 128,7
end |
|
(TRIGGERED): |
if(wr && as && cs && addr[3:0] == TIMER_0_END) |
if(wr && was && cs && waddr[3:0] == TIMER_0_END) |
begin |
state_0 <= IDLE; |
count_0 <= 8'h00; |
158,7 → 160,7
case (state_1) |
(IDLE): |
|
if(wr && as && cs && addr[3:0] == TIMER_1_START) |
if(wr && was && cs && waddr[3:0] == TIMER_1_START) |
begin |
state_1 <= RUNNING; |
count_1 <= wdata; |
182,7 → 184,7
end |
|
(TRIGGERED): |
if(wr && as && cs && addr[3:0] == TIMER_1_END) |
if(wr && was && cs && waddr[3:0] == TIMER_1_END) |
begin |
state_1 <= IDLE; |
count_1 <= 8'h00; |
/projects/logic/ip/io_module/rtl/verilog/io_module_ps2.v
3,7 → 3,7
`ifdef PS2 |
|
|
module `VARIENT`PS2 |
module `VARIANT`PS2 |
#(parameter BASE_ADDR = 4'h0, |
parameter BASE_WIDTH = 4, |
parameter ADDR_WIDTH = 8 |
15,7 → 15,8
input wire cs, |
input wire wr, |
input wire rd, |
input wire [7:0] addr, |
input wire [7:0] waddr, |
input wire [7:0] raddr, |
input wire [7:0] wdata, |
output reg [7:0] rdata, |
output wire rcv_data_avail, |
45,7 → 46,9
parameter Y_POS = 4'h8; |
|
|
reg as; |
reg was; |
reg ras; |
|
reg [7:0] cntrl; |
reg [7:0] wdata_buf; |
wire [7:0] rcv_data; |
63,12 → 66,15
|
|
|
always@(*) as = (addr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
always@(*) was = (waddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
always@(*) ras = (raddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
|
|
|
always@(*) |
if(rd && cs && as) |
if(rd && cs && ras) |
begin |
case(addr[3:0]) |
case(raddr[3:0]) |
PS2_DATA: rdata = rcv_data; |
STATUS: rdata = { |
1'b0, |
98,7 → 104,7
always@(posedge clk) |
if(reset) wdata_buf <= 8'h00; |
else |
if( wr &&as && cs && addr[3:0] == PS2_DATA) |
if( wr &&was && cs && waddr[3:0] == PS2_DATA) |
wdata_buf <= wdata; |
else |
wdata_buf <= wdata_buf; |
108,7 → 114,7
always@(posedge clk) |
if(reset) cntrl <= 8'h00; |
else |
if( wr &&as && cs && addr[3:0] == CNTRL) |
if( wr &&was && cs && waddr[3:0] == CNTRL) |
cntrl <= wdata; |
else cntrl <= cntrl; |
|
144,7 → 150,7
.rx_parity_rcv ( rx_parity_rcv ), |
.rx_parity_cal ( rx_parity_cal ), |
.rx_frame_error ( rx_frame_error ), |
.clr_rx_full ( cntrl[0] ? read :rd && as && cs && (addr[3:0] == PS2_DATA)), |
.clr_rx_full ( cntrl[0] ? read :rd && ras && cs && (raddr[3:0] == PS2_DATA)), |
.tx_ack_error ( tx_ack_error ) |
); |
|
234,15 → 240,6
|
|
|
|
|
|
|
|
|
|
|
|
|
endmodule |
|
/projects/logic/ip/io_module/rtl/verilog/io_module_utimer.v
4,7 → 4,7
|
|
|
module `VARIENT`UTIMER |
module `VARIANT`UTIMER |
#(parameter BASE_ADDR = 4'h0, |
parameter BASE_WIDTH = 4, |
parameter ADDR_WIDTH = 8, |
18,7 → 18,9
input wire cs, |
input wire wr, |
input wire rd, |
input wire [ADDR_WIDTH-1:0] addr, |
input wire [ADDR_WIDTH-1:0] waddr, |
input wire [ADDR_WIDTH-1:0] raddr, |
|
input wire [7:0] wdata, |
output reg [7:0] rdata |
); |
26,26 → 28,26
parameter TIMER_LATCH = 4'h0; |
parameter TIMER_COUNT = 4'h2; |
|
|
reg ras; |
reg was; |
|
reg [7:0] count; |
reg [7:0] latch; |
reg as; |
|
reg [5:0] u_sec; |
|
|
always@( posedge clk) |
if(reset) u_sec <= FREQ-1; |
else |
if((u_sec == 0) || (wr && as && cs && addr[3:0] == TIMER_COUNT) ) u_sec <= FREQ-1; |
else u_sec <= u_sec-1; |
|
always@(waddr) was = (waddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
always@(raddr) ras = (raddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
|
|
always@(addr) as = (addr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
|
|
always@(*) |
if(rd && cs && as) |
if(rd && cs && ras) |
begin |
case(addr[3:0]) |
case(raddr[3:0]) |
TIMER_LATCH: rdata = latch[7:0]; |
TIMER_COUNT: rdata = count[7:0]; |
default: rdata = 8'h00; |
52,29 → 54,40
endcase |
end |
else rdata = 8'hFF; |
|
|
|
|
always@( posedge clk) |
if(reset) u_sec <= FREQ-1; |
else |
if((u_sec == 0) || (wr && was && cs && waddr[3:0] == TIMER_COUNT) ) u_sec <= FREQ-1; |
else u_sec <= u_sec-1; |
|
|
|
|
always@(posedge clk) |
if (reset) latch <= 8'h00; |
if (reset) latch <= 8'h00; |
else |
if(wr && as && cs && addr[3:0] == TIMER_LATCH) latch <= wdata; |
else latch <= latch; |
if(wr && was && cs && waddr[3:0] == TIMER_LATCH) latch <= wdata; |
else latch <= latch; |
|
|
|
always@(posedge clk) |
if (reset) count <= 8'h00; |
if (reset) count <= 8'h00; |
else |
if(wr && as && cs && addr[3:0] == TIMER_COUNT) count <= wdata; |
if(wr && was && cs && waddr[3:0] == TIMER_COUNT) count <= wdata; |
else |
if(u_sec == 0) |
begin |
if(count == 8'h00) count <= 8'h00; |
if(count == 8'h00) count <= 8'h00; |
else |
if(count == 8'h01) count <= latch; |
else count <= count-1; |
if(count == 8'h01) count <= latch; |
else count <= count-1; |
end |
else count <= count; |
else count <= count; |
|
|
|
/projects/logic/ip/io_module/rtl/verilog/io_module_pic.v
2,7 → 2,7
|
`ifdef PIC |
|
module `VARIENT`PIC |
module `VARIANT`PIC |
|
#( |
parameter BASE_ADDR = 4'h0, |
20,7 → 20,8
input wire cs, |
input wire wr, |
input wire rd, |
input wire [ADDR_WIDTH-1:0] addr, |
input wire [ADDR_WIDTH-1:0] waddr, |
input wire [ADDR_WIDTH-1:0] raddr, |
input wire [7:0] wdata, |
output reg [7:0] rdata, |
|
46,14 → 47,18
parameter NMI_ACT = 4'h4; |
|
|
reg as; |
reg was; |
reg ras; |
|
|
always@(*) as = (addr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
always@(*) was = (waddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
always@(*) ras = (raddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
|
|
always@(*) |
if(rd && cs && as) |
if(rd && cs && ras) |
begin |
case(addr[3:0]) |
case(raddr[3:0]) |
INT_IN: rdata = int_in; |
IRQ_ENABLE: rdata = irq_enable; |
NMI_ENABLE: rdata = nmi_enable; |
77,12 → 82,12
nmi_out <= 1'b0; |
end |
else |
if(wr &&as && cs && addr[3:0] == IRQ_ENABLE) |
if(wr && was && cs && waddr[3:0] == IRQ_ENABLE) |
begin |
irq_enable <= wdata; |
end |
else |
if(wr &&as && cs && addr[3:0] == NMI_ENABLE) |
if(wr && was && cs && waddr[3:0] == NMI_ENABLE) |
begin |
nmi_enable <= wdata; |
end |
/projects/logic/ip/io_module/rtl/verilog/io_module_uart.v
2,7 → 2,7
|
`ifdef UART |
|
module `VARIENT`UART |
module `VARIANT`UART |
#(parameter BASE_ADDR = 4'h0, |
parameter BASE_WIDTH = 4, |
parameter ADDR_WIDTH = 8 |
14,7 → 14,8
input wire cs, |
input wire wr, |
input wire rd, |
input wire [7:0] addr, |
input wire [7:0] waddr, |
input wire [7:0] raddr, |
input wire [7:0] wdata, |
output reg [7:0] rdata, |
output wire txd_pad_out, |
34,7 → 35,9
parameter CNTRL = 4'h4; |
parameter STATUS = 4'h6; |
|
reg as; |
reg was; |
reg ras; |
|
wire [7:0] rcv_data; |
reg [7:0] cntrl; |
reg load; |
44,12 → 47,14
|
|
|
always@(*) as = (addr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
always@(*) was = (waddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
always@(*) ras = (raddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
|
|
always@(*) |
if(rd && cs && as) |
if(rd && cs && ras) |
begin |
case(addr[3:0]) |
case(raddr[3:0]) |
RCV_DATA: rdata = rcv_data; |
CNTRL: rdata = cntrl; |
STATUS: rdata = {status[7:1],rx_data_avail}; |
66,12 → 71,12
load <= 1'b0; |
end |
else |
if(wr && as && cs && addr[3:0] == CNTRL) |
if(wr && was && cs && waddr[3:0] == CNTRL) |
begin |
cntrl <= wdata; |
end |
else |
if(wr &&as && cs && addr[3:0] == XMIT_DATA) |
if(wr && was && cs && waddr[3:0] == XMIT_DATA) |
begin |
load <= 1'b1; |
|
87,12 → 92,12
|
|
always@(posedge clk) |
if (reset) rx_data_avail <= 1'b0; |
if (reset) rx_data_avail <= 1'b0; |
else |
if(rxd_buffer_full) rx_data_avail <= 1'b1; |
if(rxd_buffer_full) rx_data_avail <= 1'b1; |
else |
if(rd && as && cs && (addr[3:0] == RCV_DATA)) rx_data_avail <= 1'b0; |
else rx_data_avail <= rx_data_avail; |
if(rd && was && cs && (waddr[3:0] == RCV_DATA)) rx_data_avail <= 1'b0; |
else rx_data_avail <= rx_data_avail; |
|
|
|
107,39 → 112,34
|
|
|
assign status[2] = 1'b0; |
|
|
|
uart |
uart( |
.clk (clk), |
.reset (reset), |
.parity (cntrl[0]), |
.force_parity (cntrl[1]), |
.txd_break (cntrl[2]), |
.rts_in (cntrl[3]), |
.txd_data_in (wdata), |
.txd_load (load), |
.rxd_data_out (rcv_data), |
.rxd_buffer_full (rxd_buffer_full), |
.rxd_stop_error (status[1]), |
.rxd_parity (status[2]), |
.rxd_parity_error (status[3]), |
.cts_out (status[4]), |
.txd_buffer_empty (status[5]), |
.txd_pad_out (txd_pad_out), |
.rxd_pad_in (rxd_pad_in), |
.cts_pad_in (cts_pad_in), |
.rts_pad_out (rts_pad_out) |
|
.clk ( clk ), |
.reset ( reset ), |
.txd_parity ( cntrl[0] ), |
.txd_force_parity ( cntrl[1] ), |
.txd_break ( cntrl[2] ), |
.rts_in ( cntrl[3] ), |
.txd_data_in ( wdata ), |
.txd_load ( load ), |
.rxd_data_out ( rcv_data ), |
.rxd_parity ( cntrl[0] ), |
.rxd_force_parity ( cntrl[1] ), |
.rxd_buffer_full ( rxd_buffer_full ), |
.rxd_stop_error ( status[1] ), |
.rxd_parity_error ( status[3] ), |
.cts_out ( status[4] ), |
.txd_buffer_empty ( status[5] ), |
.txd_pad_out ( txd_pad_out ), |
.rxd_pad_in ( rxd_pad_in ), |
.cts_pad_in ( cts_pad_in ), |
.rts_pad_out ( rts_pad_out ) |
); |
|
|
|
|
|
|
|
|
endmodule |
|
/projects/logic/ip/io_module/rtl/verilog/io_module_gpio.v
3,7 → 3,7
|
`ifdef GPIO |
|
module `VARIENT`GPIO |
module `VARIANT`GPIO |
|
#( |
parameter BASE_ADDR = 4'h0, |
19,7 → 19,8
input wire cs, |
input wire wr, |
input wire rd, |
input wire [ADDR_WIDTH-1:0] addr, |
input wire [ADDR_WIDTH-1:0] waddr, |
input wire [ADDR_WIDTH-1:0] raddr, |
input wire [7:0] wdata, |
output reg [7:0] rdata, |
|
52,14 → 53,18
|
|
|
reg as; |
reg ras; |
reg was; |
|
always@(*) as = (addr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
always@(*) ras = (raddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
always@(*) was = (waddr[ADDR_WIDTH-1:ADDR_WIDTH-BASE_WIDTH] == BASE_ADDR); |
|
|
|
always@(*) |
if(rd && cs && as) |
if(rd && cs && ras) |
begin |
case(addr[3:0]) |
case(raddr[3:0]) |
GPIO_0_OUT: rdata = gpio_0_out; |
GPIO_0_OE: rdata = gpio_0_oe; |
GPIO_0_IN: rdata = gpio_0_lat; |
81,22 → 86,22
gpio_1_oe <= 8'h00; |
end |
else |
if(wr && as && cs && (addr[3:0] == GPIO_0_OUT)) |
if(wr && was && cs && (waddr[3:0] == GPIO_0_OUT)) |
begin |
gpio_0_out <= wdata; |
end |
else |
if(wr && as && cs && (addr[3:0] == GPIO_0_OE)) |
if(wr && was && cs && (waddr[3:0] == GPIO_0_OE)) |
begin |
gpio_0_oe <= wdata; |
end |
else |
if(wr && as && cs && (addr[3:0] == GPIO_1_OUT)) |
if(wr && was && cs && (waddr[3:0] == GPIO_1_OUT)) |
begin |
gpio_1_out <= wdata; |
end |
else |
if(wr && as && cs && (addr[3:0] == GPIO_1_OE)) |
if(wr && was && cs && (waddr[3:0] == GPIO_1_OE)) |
begin |
gpio_1_oe <= wdata; |
end |
/projects/logic/ip/io_module/doc/geda/drawing/sym/ps2_interface_fsm.sym
0,0 → 1,118
v 20100214 1 |
B 300 0 3600 2100 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2250 5 10 1 1 0 0 1 1 |
device=ps2_interface_fsm |
T 400 2450 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=bit_count[3:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=write |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=usec_delay_done |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=ps2_idle |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=ps2_clk_fall |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=frame0 |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=force_startbit |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 300 1800 0 1800 4 0 1 |
{ |
T 400 1800 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1800 5 10 0 1 0 1 1 1 |
pinseq=9 |
} |
P 3900 200 4200 200 4 0 1 |
{ |
T 3800 200 5 10 1 1 0 7 1 1 |
pinnumber=shift_frame |
T 3900 200 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
P 3900 400 4200 400 4 0 1 |
{ |
T 3800 400 5 10 1 1 0 7 1 1 |
pinnumber=ps2_data_oe |
T 3900 400 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 3900 600 4200 600 4 0 1 |
{ |
T 3800 600 5 10 1 1 0 7 1 1 |
pinnumber=ps2_clk_oe |
T 3900 600 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
P 3900 800 4200 800 4 0 1 |
{ |
T 3800 800 5 10 1 1 0 7 1 1 |
pinnumber=load_tx_data |
T 3900 800 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 3900 1000 4200 1000 4 0 1 |
{ |
T 3800 1000 5 10 1 1 0 7 1 1 |
pinnumber=load_rx_data |
T 3900 1000 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 3900 1200 4200 1200 4 0 1 |
{ |
T 3800 1200 5 10 1 1 0 7 1 1 |
pinnumber=enable_usec_delay |
T 3900 1200 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
P 3900 1400 4200 1400 4 0 1 |
{ |
T 3800 1400 5 10 1 1 0 7 1 1 |
pinnumber=busy |
T 3900 1400 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/io_module_gpio.sym
0,0 → 1,125
v 20100214 1 |
B 300 0 4000 2300 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2450 5 10 1 1 0 0 1 1 |
device=io_module_gpio |
T 400 2650 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=wdata[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=waddr[ADDR_WIDTH-1:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=raddr[ADDR_WIDTH-1:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 10 1 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=gpio_1_in[7:0] |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 10 1 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=gpio_0_in[7:0] |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=wr |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=rd |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 300 1800 0 1800 4 0 1 |
{ |
T 400 1800 5 10 1 1 0 1 1 1 |
pinnumber=cs |
T 400 1800 5 10 0 1 0 1 1 1 |
pinseq=9 |
} |
P 300 2000 0 2000 4 0 1 |
{ |
T 400 2000 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 2000 5 10 0 1 0 1 1 1 |
pinseq=10 |
} |
P 4300 200 4600 200 10 1 1 |
{ |
T 4200 200 5 10 1 1 0 7 1 1 |
pinnumber=rdata[7:0] |
T 4200 200 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 4300 400 4600 400 10 1 1 |
{ |
T 4200 400 5 10 1 1 0 7 1 1 |
pinnumber=gpio_1_out[7:0] |
T 4200 400 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
P 4300 600 4600 600 10 1 1 |
{ |
T 4200 600 5 10 1 1 0 7 1 1 |
pinnumber=gpio_1_oe[7:0] |
T 4200 600 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 4300 800 4600 800 10 1 1 |
{ |
T 4200 800 5 10 1 1 0 7 1 1 |
pinnumber=gpio_1_lat[7:0] |
T 4200 800 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 4300 1000 4600 1000 10 1 1 |
{ |
T 4200 1000 5 10 1 1 0 7 1 1 |
pinnumber=gpio_0_out[7:0] |
T 4200 1000 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
P 4300 1200 4600 1200 10 1 1 |
{ |
T 4200 1200 5 10 1 1 0 7 1 1 |
pinnumber=gpio_0_oe[7:0] |
T 4200 1200 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
P 4300 1400 4600 1400 10 1 1 |
{ |
T 4200 1400 5 10 1 1 0 7 1 1 |
pinnumber=gpio_0_lat[7:0] |
T 4200 1400 5 10 0 1 0 7 1 1 |
pinseq=17 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/uart.sym
0,0 → 1,146
v 20100214 1 |
B 300 0 4700 2700 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2850 5 10 1 1 0 0 1 1 |
device=uart |
T 400 3050 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=txd_data_in[SIZE-1:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=txd_parity |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=txd_load |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=txd_force_parity |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=txd_break |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=rxd_parity |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=rxd_pad_in |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=rxd_force_parity |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 300 1800 0 1800 4 0 1 |
{ |
T 400 1800 5 10 1 1 0 1 1 1 |
pinnumber=rts_in |
T 400 1800 5 10 0 1 0 1 1 1 |
pinseq=9 |
} |
P 300 2000 0 2000 4 0 1 |
{ |
T 400 2000 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 2000 5 10 0 1 0 1 1 1 |
pinseq=10 |
} |
P 300 2200 0 2200 4 0 1 |
{ |
T 400 2200 5 10 1 1 0 1 1 1 |
pinnumber=cts_pad_in |
T 400 2200 5 10 0 1 0 1 1 1 |
pinseq=11 |
} |
P 300 2400 0 2400 4 0 1 |
{ |
T 400 2400 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 2400 5 10 0 1 0 1 1 1 |
pinseq=12 |
} |
P 5000 200 5300 200 10 1 1 |
{ |
T 4900 200 5 10 1 1 0 7 1 1 |
pinnumber=rxd_data_out[SIZE-1:0] |
T 4900 200 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 5000 400 5300 400 4 0 1 |
{ |
T 4900 400 5 10 1 1 0 7 1 1 |
pinnumber=txd_pad_out |
T 5000 400 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 5000 600 5300 600 4 0 1 |
{ |
T 4900 600 5 10 1 1 0 7 1 1 |
pinnumber=txd_buffer_empty |
T 5000 600 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
P 5000 800 5300 800 4 0 1 |
{ |
T 4900 800 5 10 1 1 0 7 1 1 |
pinnumber=rxd_stop_error |
T 5000 800 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
P 5000 1000 5300 1000 4 0 1 |
{ |
T 4900 1000 5 10 1 1 0 7 1 1 |
pinnumber=rxd_parity_error |
T 5000 1000 5 10 0 1 0 7 1 1 |
pinseq=17 |
} |
P 5000 1200 5300 1200 4 0 1 |
{ |
T 4900 1200 5 10 1 1 0 7 1 1 |
pinnumber=rxd_buffer_full |
T 5000 1200 5 10 0 1 0 7 1 1 |
pinseq=18 |
} |
P 5000 1400 5300 1400 4 0 1 |
{ |
T 4900 1400 5 10 1 1 0 7 1 1 |
pinnumber=rts_pad_out |
T 5000 1400 5 10 0 1 0 7 1 1 |
pinseq=19 |
} |
P 5000 1600 5300 1600 4 0 1 |
{ |
T 4900 1600 5 10 1 1 0 7 1 1 |
pinnumber=cts_out |
T 5000 1600 5 10 0 1 0 7 1 1 |
pinseq=20 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/uart_xmit.sym
0,0 → 1,76
v 20100214 1 |
B 300 0 4100 1900 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2050 5 10 1 1 0 0 1 1 |
device=uart_xmit |
T 400 2250 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=txd_data_in[SIZE-1:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=txd_load |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=txd_break |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=parity |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=force_parity |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=baud_clk |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 4400 200 4700 200 4 0 1 |
{ |
T 4300 200 5 10 1 1 0 7 1 1 |
pinnumber=txd_pad_out |
T 4400 200 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
P 4400 400 4700 400 4 0 1 |
{ |
T 4300 400 5 10 1 1 0 7 1 1 |
pinnumber=txd_buffer_empty |
T 4400 400 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/io_module_timer.sym
0,0 → 1,76
v 20100214 1 |
B 300 0 4000 1900 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2050 5 10 1 1 0 0 1 1 |
device=io_module_timer |
T 400 2250 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=wdata[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=waddr[ADDR_WIDTH-1:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=raddr[ADDR_WIDTH-1:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=wr |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=rd |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=cs |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 4300 200 4600 200 10 1 1 |
{ |
T 4200 200 5 10 1 1 0 7 1 1 |
pinnumber=rdata[7:0] |
T 4200 200 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
P 4300 400 4600 400 10 1 1 |
{ |
T 4200 400 5 10 1 1 0 7 1 1 |
pinnumber=irq[TIMERS-1:0] |
T 4200 400 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/io_module.sym
0,0 → 1,272
v 20100214 1 |
B 300 0 5100 4900 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 5050 5 10 1 1 0 0 1 1 |
device=io_module |
T 400 5250 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=wdata[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=waddr[ADDR_WIDTH-BASE_WIDTH-1:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=gpio_1_in[7:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 10 1 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=gpio_0_in[7:0] |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 10 1 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=ext_irq_in[7:0] |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 10 1 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=addr[ADDR_WIDTH-1:0] |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=wr |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=rxd_pad_in |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 300 1800 0 1800 4 0 1 |
{ |
T 400 1800 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 1800 5 10 0 1 0 1 1 1 |
pinseq=9 |
} |
P 300 2000 0 2000 4 0 1 |
{ |
T 400 2000 5 10 1 1 0 1 1 1 |
pinnumber=rd |
T 400 2000 5 10 0 1 0 1 1 1 |
pinseq=10 |
} |
P 300 2200 0 2200 4 0 1 |
{ |
T 400 2200 5 10 1 1 0 1 1 1 |
pinnumber=ps2_data_in |
T 400 2200 5 10 0 1 0 1 1 1 |
pinseq=11 |
} |
P 300 2400 0 2400 4 0 1 |
{ |
T 400 2400 5 10 1 1 0 1 1 1 |
pinnumber=ps2_clk_in |
T 400 2400 5 10 0 1 0 1 1 1 |
pinseq=12 |
} |
P 300 2600 0 2600 4 0 1 |
{ |
T 400 2600 5 10 1 1 0 1 1 1 |
pinnumber=enable |
T 400 2600 5 10 0 1 0 1 1 1 |
pinseq=13 |
} |
P 300 2800 0 2800 4 0 1 |
{ |
T 400 2800 5 10 1 1 0 1 1 1 |
pinnumber=cts_pad_in |
T 400 2800 5 10 0 1 0 1 1 1 |
pinseq=14 |
} |
P 300 3000 0 3000 4 0 1 |
{ |
T 400 3000 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 3000 5 10 0 1 0 1 1 1 |
pinseq=15 |
} |
P 5400 200 5700 200 10 1 1 |
{ |
T 5300 200 5 10 1 1 0 7 1 1 |
pinnumber=y_pos[9:0] |
T 5300 200 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
P 5400 400 5700 400 10 1 1 |
{ |
T 5300 400 5 10 1 1 0 7 1 1 |
pinnumber=x_pos[9:0] |
T 5300 400 5 10 0 1 0 7 1 1 |
pinseq=17 |
} |
P 5400 600 5700 600 10 1 1 |
{ |
T 5300 600 5 10 1 1 0 7 1 1 |
pinnumber=timer_irq[1:0] |
T 5300 600 5 10 0 1 0 7 1 1 |
pinseq=18 |
} |
P 5400 800 5700 800 10 1 1 |
{ |
T 5300 800 5 10 1 1 0 7 1 1 |
pinnumber=rdata[7:0] |
T 5300 800 5 10 0 1 0 7 1 1 |
pinseq=19 |
} |
P 5400 1000 5700 1000 10 1 1 |
{ |
T 5300 1000 5 10 1 1 0 7 1 1 |
pinnumber=gpio_1_out[7:0] |
T 5300 1000 5 10 0 1 0 7 1 1 |
pinseq=20 |
} |
P 5400 1200 5700 1200 10 1 1 |
{ |
T 5300 1200 5 10 1 1 0 7 1 1 |
pinnumber=gpio_1_oe[7:0] |
T 5300 1200 5 10 0 1 0 7 1 1 |
pinseq=21 |
} |
P 5400 1400 5700 1400 10 1 1 |
{ |
T 5300 1400 5 10 1 1 0 7 1 1 |
pinnumber=gpio_1_lat[7:0] |
T 5300 1400 5 10 0 1 0 7 1 1 |
pinseq=22 |
} |
P 5400 1600 5700 1600 10 1 1 |
{ |
T 5300 1600 5 10 1 1 0 7 1 1 |
pinnumber=gpio_0_out[7:0] |
T 5300 1600 5 10 0 1 0 7 1 1 |
pinseq=23 |
} |
P 5400 1800 5700 1800 10 1 1 |
{ |
T 5300 1800 5 10 1 1 0 7 1 1 |
pinnumber=gpio_0_oe[7:0] |
T 5300 1800 5 10 0 1 0 7 1 1 |
pinseq=24 |
} |
P 5400 2000 5700 2000 10 1 1 |
{ |
T 5300 2000 5 10 1 1 0 7 1 1 |
pinnumber=gpio_0_lat[7:0] |
T 5300 2000 5 10 0 1 0 7 1 1 |
pinseq=25 |
} |
P 5400 2200 5700 2200 4 0 1 |
{ |
T 5300 2200 5 10 1 1 0 7 1 1 |
pinnumber=txd_pad_out |
T 5400 2200 5 10 0 1 0 7 1 1 |
pinseq=26 |
} |
P 5400 2400 5700 2400 4 0 1 |
{ |
T 5300 2400 5 10 1 1 0 7 1 1 |
pinnumber=tx_irq |
T 5400 2400 5 10 0 1 0 7 1 1 |
pinseq=27 |
} |
P 5400 2600 5700 2600 4 0 1 |
{ |
T 5300 2600 5 10 1 1 0 7 1 1 |
pinnumber=rx_irq |
T 5400 2600 5 10 0 1 0 7 1 1 |
pinseq=28 |
} |
P 5400 2800 5700 2800 4 0 1 |
{ |
T 5300 2800 5 10 1 1 0 7 1 1 |
pinnumber=rts_pad_out |
T 5400 2800 5 10 0 1 0 7 1 1 |
pinseq=29 |
} |
P 5400 3000 5700 3000 4 0 1 |
{ |
T 5300 3000 5 10 1 1 0 7 1 1 |
pinnumber=ps2_data_oe |
T 5400 3000 5 10 0 1 0 7 1 1 |
pinseq=30 |
} |
P 5400 3200 5700 3200 4 0 1 |
{ |
T 5300 3200 5 10 1 1 0 7 1 1 |
pinnumber=ps2_data_avail |
T 5400 3200 5 10 0 1 0 7 1 1 |
pinseq=31 |
} |
P 5400 3400 5700 3400 4 0 1 |
{ |
T 5300 3400 5 10 1 1 0 7 1 1 |
pinnumber=ps2_clk_oe |
T 5400 3400 5 10 0 1 0 7 1 1 |
pinseq=32 |
} |
P 5400 3600 5700 3600 4 0 1 |
{ |
T 5300 3600 5 10 1 1 0 7 1 1 |
pinnumber=pic_nmi |
T 5400 3600 5 10 0 1 0 7 1 1 |
pinseq=33 |
} |
P 5400 3800 5700 3800 4 0 1 |
{ |
T 5300 3800 5 10 1 1 0 7 1 1 |
pinnumber=pic_irq |
T 5400 3800 5 10 0 1 0 7 1 1 |
pinseq=34 |
} |
P 5400 4000 5700 4000 4 0 1 |
{ |
T 5300 4000 5 10 1 1 0 7 1 1 |
pinnumber=new_packet |
T 5400 4000 5 10 0 1 0 7 1 1 |
pinseq=35 |
} |
P 5400 4200 5700 4200 4 0 1 |
{ |
T 5300 4200 5 10 1 1 0 7 1 1 |
pinnumber=ms_right |
T 5400 4200 5 10 0 1 0 7 1 1 |
pinseq=36 |
} |
P 5400 4400 5700 4400 4 0 1 |
{ |
T 5300 4400 5 10 1 1 0 7 1 1 |
pinnumber=ms_mid |
T 5400 4400 5 10 0 1 0 7 1 1 |
pinseq=37 |
} |
P 5400 4600 5700 4600 4 0 1 |
{ |
T 5300 4600 5 10 1 1 0 7 1 1 |
pinnumber=ms_left |
T 5400 4600 5 10 0 1 0 7 1 1 |
pinseq=38 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/uart_baudgen.sym
0,0 → 1,27
v 20100214 1 |
B 300 0 2100 700 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 850 5 10 1 1 0 0 1 1 |
device=uart_baudgen |
T 400 1050 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 4 0 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 2400 200 2700 200 4 0 1 |
{ |
T 2300 200 5 10 1 1 0 7 1 1 |
pinnumber=baud_clk_out |
T 2400 200 5 10 0 1 0 7 1 1 |
pinseq=3 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/io_module_ps2.sym
0,0 → 1,146
v 20100214 1 |
B 300 0 2900 2300 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2450 5 10 1 1 0 0 1 1 |
device=io_module_ps2 |
T 400 2650 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=wdata[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=waddr[7:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=raddr[7:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=wr |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=rd |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=ps2_data_in |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=ps2_clk_in |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 300 1800 0 1800 4 0 1 |
{ |
T 400 1800 5 10 1 1 0 1 1 1 |
pinnumber=cs |
T 400 1800 5 10 0 1 0 1 1 1 |
pinseq=9 |
} |
P 300 2000 0 2000 4 0 1 |
{ |
T 400 2000 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 2000 5 10 0 1 0 1 1 1 |
pinseq=10 |
} |
P 3200 200 3500 200 10 1 1 |
{ |
T 3100 200 5 10 1 1 0 7 1 1 |
pinnumber=y_pos[9:0] |
T 3100 200 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 3200 400 3500 400 10 1 1 |
{ |
T 3100 400 5 10 1 1 0 7 1 1 |
pinnumber=x_pos[9:0] |
T 3100 400 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
P 3200 600 3500 600 10 1 1 |
{ |
T 3100 600 5 10 1 1 0 7 1 1 |
pinnumber=rdata[7:0] |
T 3100 600 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 3200 800 3500 800 4 0 1 |
{ |
T 3100 800 5 10 1 1 0 7 1 1 |
pinnumber=rcv_data_avail |
T 3200 800 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 3200 1000 3500 1000 4 0 1 |
{ |
T 3100 1000 5 10 1 1 0 7 1 1 |
pinnumber=ps2_data_oe |
T 3200 1000 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
P 3200 1200 3500 1200 4 0 1 |
{ |
T 3100 1200 5 10 1 1 0 7 1 1 |
pinnumber=ps2_clk_oe |
T 3200 1200 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
P 3200 1400 3500 1400 4 0 1 |
{ |
T 3100 1400 5 10 1 1 0 7 1 1 |
pinnumber=new_packet |
T 3200 1400 5 10 0 1 0 7 1 1 |
pinseq=17 |
} |
P 3200 1600 3500 1600 4 0 1 |
{ |
T 3100 1600 5 10 1 1 0 7 1 1 |
pinnumber=ms_right |
T 3200 1600 5 10 0 1 0 7 1 1 |
pinseq=18 |
} |
P 3200 1800 3500 1800 4 0 1 |
{ |
T 3100 1800 5 10 1 1 0 7 1 1 |
pinnumber=ms_mid |
T 3200 1800 5 10 0 1 0 7 1 1 |
pinseq=19 |
} |
P 3200 2000 3500 2000 4 0 1 |
{ |
T 3100 2000 5 10 1 1 0 7 1 1 |
pinnumber=ms_left |
T 3200 2000 5 10 0 1 0 7 1 1 |
pinseq=20 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/io_module_utimer.sym
0,0 → 1,69
v 20100214 1 |
B 300 0 3500 1900 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2050 5 10 1 1 0 0 1 1 |
device=io_module_utimer |
T 400 2250 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=wdata[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=waddr[ADDR_WIDTH-1:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=raddr[ADDR_WIDTH-1:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=wr |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=rd |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=cs |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 3800 200 4100 200 10 1 1 |
{ |
T 3700 200 5 10 1 1 0 7 1 1 |
pinnumber=rdata[7:0] |
T 3700 200 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/ps2_interface.sym
0,0 → 1,132
v 20100214 1 |
B 300 0 3100 2500 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2650 5 10 1 1 0 0 1 1 |
device=ps2_interface |
T 400 2850 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=tx_data[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=write |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=ps2_data_in |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=ps2_clk_in |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=clr_rx_full |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 3400 200 3700 200 10 1 1 |
{ |
T 3300 200 5 10 1 1 0 7 1 1 |
pinnumber=rx_data[7:0] |
T 3300 200 5 10 0 1 0 7 1 1 |
pinseq=8 |
} |
P 3400 400 3700 400 4 0 1 |
{ |
T 3300 400 5 10 1 1 0 7 1 1 |
pinnumber=tx_ack_error |
T 3400 400 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
P 3400 600 3700 600 4 0 1 |
{ |
T 3300 600 5 10 1 1 0 7 1 1 |
pinnumber=rx_parity_rcv |
T 3400 600 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
P 3400 800 3700 800 4 0 1 |
{ |
T 3300 800 5 10 1 1 0 7 1 1 |
pinnumber=rx_parity_error |
T 3400 800 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 3400 1000 3700 1000 4 0 1 |
{ |
T 3300 1000 5 10 1 1 0 7 1 1 |
pinnumber=rx_parity_cal |
T 3400 1000 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
P 3400 1200 3700 1200 4 0 1 |
{ |
T 3300 1200 5 10 1 1 0 7 1 1 |
pinnumber=rx_full |
T 3400 1200 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 3400 1400 3700 1400 4 0 1 |
{ |
T 3300 1400 5 10 1 1 0 7 1 1 |
pinnumber=rx_frame_error |
T 3400 1400 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 3400 1600 3700 1600 4 0 1 |
{ |
T 3300 1600 5 10 1 1 0 7 1 1 |
pinnumber=read |
T 3400 1600 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
P 3400 1800 3700 1800 4 0 1 |
{ |
T 3300 1800 5 10 1 1 0 7 1 1 |
pinnumber=ps2_data_oe |
T 3400 1800 5 10 0 1 0 7 1 1 |
pinseq=16 |
} |
P 3400 2000 3700 2000 4 0 1 |
{ |
T 3300 2000 5 10 1 1 0 7 1 1 |
pinnumber=ps2_clk_oe |
T 3400 2000 5 10 0 1 0 7 1 1 |
pinseq=17 |
} |
P 3400 2200 3700 2200 4 0 1 |
{ |
T 3300 2200 5 10 1 1 0 7 1 1 |
pinnumber=busy |
T 3400 2200 5 10 0 1 0 7 1 1 |
pinseq=18 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/cde_sync_with_hysteresis.sym
0,0 → 1,48
v 20100214 1 |
B 300 0 4200 900 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 1050 5 10 1 1 0 0 1 1 |
device=cde_sync_with_hysteresis |
T 400 1250 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=data_in[WIDTH-1:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 4500 200 4800 200 10 1 1 |
{ |
T 4400 200 5 10 1 1 0 7 1 1 |
pinnumber=data_rise[WIDTH-1:0] |
T 4400 200 5 10 0 1 0 7 1 1 |
pinseq=4 |
} |
P 4500 400 4800 400 10 1 1 |
{ |
T 4400 400 5 10 1 1 0 7 1 1 |
pinnumber=data_out[WIDTH-1:0] |
T 4400 400 5 10 0 1 0 7 1 1 |
pinseq=5 |
} |
P 4500 600 4800 600 10 1 1 |
{ |
T 4400 600 5 10 1 1 0 7 1 1 |
pinnumber=data_fall[WIDTH-1:0] |
T 4400 600 5 10 0 1 0 7 1 1 |
pinseq=6 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/io_module_pic.sym
0,0 → 1,90
v 20100214 1 |
B 300 0 3500 2100 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2250 5 10 1 1 0 0 1 1 |
device=io_module_pic |
T 400 2450 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=wdata[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=waddr[ADDR_WIDTH-1:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=raddr[ADDR_WIDTH-1:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 10 1 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=int_in[7:0] |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=wr |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=rd |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=cs |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 300 1800 0 1800 4 0 1 |
{ |
T 400 1800 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1800 5 10 0 1 0 1 1 1 |
pinseq=9 |
} |
P 3800 200 4100 200 10 1 1 |
{ |
T 3700 200 5 10 1 1 0 7 1 1 |
pinnumber=rdata[7:0] |
T 3700 200 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
P 3800 400 4100 400 4 0 1 |
{ |
T 3700 400 5 10 1 1 0 7 1 1 |
pinnumber=nmi_out |
T 3800 400 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 3800 600 4100 600 4 0 1 |
{ |
T 3700 600 5 10 1 1 0 7 1 1 |
pinnumber=irq_out |
T 3800 600 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/io_module_uart.sym
0,0 → 1,111
v 20100214 1 |
B 300 0 2500 2300 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 2450 5 10 1 1 0 0 1 1 |
device=io_module_uart |
T 400 2650 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 10 1 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=wdata[7:0] |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 10 1 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=waddr[7:0] |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 10 1 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=raddr[7:0] |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=wr |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=rxd_pad_in |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 300 1400 0 1400 4 0 1 |
{ |
T 400 1400 5 10 1 1 0 1 1 1 |
pinnumber=rd |
T 400 1400 5 10 0 1 0 1 1 1 |
pinseq=7 |
} |
P 300 1600 0 1600 4 0 1 |
{ |
T 400 1600 5 10 1 1 0 1 1 1 |
pinnumber=cts_pad_in |
T 400 1600 5 10 0 1 0 1 1 1 |
pinseq=8 |
} |
P 300 1800 0 1800 4 0 1 |
{ |
T 400 1800 5 10 1 1 0 1 1 1 |
pinnumber=cs |
T 400 1800 5 10 0 1 0 1 1 1 |
pinseq=9 |
} |
P 300 2000 0 2000 4 0 1 |
{ |
T 400 2000 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 2000 5 10 0 1 0 1 1 1 |
pinseq=10 |
} |
P 2800 200 3100 200 10 1 1 |
{ |
T 2700 200 5 10 1 1 0 7 1 1 |
pinnumber=rdata[7:0] |
T 2700 200 5 10 0 1 0 7 1 1 |
pinseq=11 |
} |
P 2800 400 3100 400 4 0 1 |
{ |
T 2700 400 5 10 1 1 0 7 1 1 |
pinnumber=txd_pad_out |
T 2800 400 5 10 0 1 0 7 1 1 |
pinseq=12 |
} |
P 2800 600 3100 600 4 0 1 |
{ |
T 2700 600 5 10 1 1 0 7 1 1 |
pinnumber=tx_irq |
T 2800 600 5 10 0 1 0 7 1 1 |
pinseq=13 |
} |
P 2800 800 3100 800 4 0 1 |
{ |
T 2700 800 5 10 1 1 0 7 1 1 |
pinnumber=rx_irq |
T 2800 800 5 10 0 1 0 7 1 1 |
pinseq=14 |
} |
P 2800 1000 3100 1000 4 0 1 |
{ |
T 2700 1000 5 10 1 1 0 7 1 1 |
pinnumber=rts_pad_out |
T 2800 1000 5 10 0 1 0 7 1 1 |
pinseq=15 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/sym/uart_rcvr.sym
0,0 → 1,76
v 20100214 1 |
B 300 0 3800 1500 3 60 0 0 -1 -1 0 -1 -1 -1 -1 -1 |
T 400 1650 5 10 1 1 0 0 1 1 |
device=uart_rcvr |
T 400 1850 8 10 1 1 0 0 1 1 |
refdes=U? |
P 300 200 0 200 4 0 1 |
{ |
T 400 200 5 10 1 1 0 1 1 1 |
pinnumber=rxd_pad_in |
T 400 200 5 10 0 1 0 1 1 1 |
pinseq=1 |
} |
P 300 400 0 400 4 0 1 |
{ |
T 400 400 5 10 1 1 0 1 1 1 |
pinnumber=reset |
T 400 400 5 10 0 1 0 1 1 1 |
pinseq=2 |
} |
P 300 600 0 600 4 0 1 |
{ |
T 400 600 5 10 1 1 0 1 1 1 |
pinnumber=parity |
T 400 600 5 10 0 1 0 1 1 1 |
pinseq=3 |
} |
P 300 800 0 800 4 0 1 |
{ |
T 400 800 5 10 1 1 0 1 1 1 |
pinnumber=force_parity |
T 400 800 5 10 0 1 0 1 1 1 |
pinseq=4 |
} |
P 300 1000 0 1000 4 0 1 |
{ |
T 400 1000 5 10 1 1 0 1 1 1 |
pinnumber=clk |
T 400 1000 5 10 0 1 0 1 1 1 |
pinseq=5 |
} |
P 300 1200 0 1200 4 0 1 |
{ |
T 400 1200 5 10 1 1 0 1 1 1 |
pinnumber=baud_clk |
T 400 1200 5 10 0 1 0 1 1 1 |
pinseq=6 |
} |
P 4100 200 4400 200 10 1 1 |
{ |
T 4000 200 5 10 1 1 0 7 1 1 |
pinnumber=rxd_data_out[SIZE-1:0] |
T 4000 200 5 10 0 1 0 7 1 1 |
pinseq=7 |
} |
P 4100 400 4400 400 4 0 1 |
{ |
T 4000 400 5 10 1 1 0 7 1 1 |
pinnumber=rxd_stop_error |
T 4100 400 5 10 0 1 0 7 1 1 |
pinseq=8 |
} |
P 4100 600 4400 600 4 0 1 |
{ |
T 4000 600 5 10 1 1 0 7 1 1 |
pinnumber=rxd_parity_error |
T 4100 600 5 10 0 1 0 7 1 1 |
pinseq=9 |
} |
P 4100 800 4400 800 4 0 1 |
{ |
T 4000 800 5 10 1 1 0 7 1 1 |
pinnumber=rxd_buffer_full |
T 4100 800 5 10 0 1 0 7 1 1 |
pinseq=10 |
} |
/projects/logic/ip/io_module/doc/geda/drawing/filelist
0,0 → 1,8
`include "../../../rtl/gen/syn/io_module.v" |
`include "../../../../uart/rtl/gen/syn/uart.v" |
`include "../../../../ps2_interface/rtl/gen/syn/ps2_interface.v" |
`include "../../lib/cde_sync/cde_sync_with_hysteresis.v" |
|
|
|
|
/projects/logic/ip/io_module/doc/copyright.v
9,7 → 9,7
// // |
// // |
// // |
// Copyright (C) <2010> <Ouabache DesignWorks> // |
// Copyright (C) <2009> <Ouabache DesignWorks> // |
// // |
// // |
// This source file may be used and distributed without // |
/projects/logic/ip/io_module/sim/run/default/TB.defs
1,6 → 1,3
`define TIMESCALE 1ns/1ns |
`timescale `TIMESCALE |
`define TIMEFORMAT $timeformat(-6, 2, " us", 14); |
`define PERIOD 20.00000 |
|
|
/projects/logic/ip/io_module/sim/run/default/test_define
1,6 → 1,5
initial |
begin |
`TIMEFORMAT |
$display(" "); |
$display(" ==================================================="); |
$display("%t Test Start",$realtime); |
/targets/Basys/Pad_Ring.v
87,10 → 87,13
wire jc_4_pad_out; |
|
|
wire rts_pad_out; |
wire cts_pad_in; |
wire rxd_pad_in; |
wire txd_pad_out; |
|
|
|
|
// Pad Ring |
|
cde_pad_se_dig a_clk_pad( |
/Makefile
73,9 → 73,9
(\ |
cd ${home}/${design}_cmp ;\ |
echo " number of fpgas";\ |
find . | grep def_file | wc ;\ |
find . | grep def_file | grep -v children | wc -l ;\ |
echo " number that finished";\ |
find . | grep bitstream.svf |wc ;\ |
find . | grep Board_Design_jtag.bit |wc -l ;\ |
) |
|
|