mirror of
https://github.com/aolofsson/oh.git
synced 2025-01-30 02:32:53 +08:00
8c350eed91
-Changed to FIFO on TX path (cleaner) -No good solution on RX with CDC since clock can stop, so you can't use an async fifo. -Slave needs cleanup, rethink... -Using commong par2ser and ser2par blocks
76 lines
3.4 KiB
Verilog
76 lines
3.4 KiB
Verilog
//#############################################################################
|
|
//# Purpose: Serial to Parallel Converter #
|
|
//#############################################################################
|
|
//# Author: Andreas Olofsson #
|
|
//# License: MIT (see below) #
|
|
//#############################################################################
|
|
|
|
module oh_ser2par (/*AUTOARG*/
|
|
// Outputs
|
|
dout,
|
|
// Inputs
|
|
clk, din, lsbfirst, shift
|
|
);
|
|
|
|
//###########################
|
|
//# INTERFACE
|
|
//###########################
|
|
|
|
// parameters
|
|
parameter PW = 64; // parallel packet width
|
|
parameter SW = 1; // serial packet width
|
|
localparam CW = $clog2(PW/SW); // serialization factor (for counter)
|
|
|
|
// reset, clk
|
|
input clk; // sampling clock
|
|
|
|
//data interface
|
|
input [SW-1:0] din; // serial data
|
|
output [PW-1:0] dout; // parallel data
|
|
|
|
// control interface
|
|
input lsbfirst; // lsb first order
|
|
input shift; // shift the shifter
|
|
|
|
//##############################
|
|
//# BODY
|
|
//##############################
|
|
|
|
reg [PW-1:0] dout;
|
|
reg [CW-1:0] count;
|
|
wire [PW-1:0] shiftdata;
|
|
|
|
always @ (posedge clk)
|
|
if(shift & lsbfirst)
|
|
dout[PW-1:0] <= {din[SW-1:0],dout[PW-1:SW]};
|
|
else if(shift)
|
|
dout[PW-1:0] <= {dout[PW-SW-1:0],din[SW-1:0]};
|
|
|
|
endmodule // oh_ser2par
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// The MIT License (MIT) //
|
|
// //
|
|
// Copyright (c) 2015-2016, Adapteva, Inc. //
|
|
// //
|
|
// Permission is hereby granted, free of charge, to any person obtaining a //
|
|
// copy of this software and associated documentation files (the "Software") //
|
|
// to deal in the Software without restriction, including without limitation //
|
|
// the rights to use, copy, modify, merge, publish, distribute, sublicense, //
|
|
// and/or sell copies of the Software, and to permit persons to whom the //
|
|
// Software is furnished to do so, subject to the following conditions: //
|
|
// //
|
|
// The above copyright notice and this permission notice shall be included //
|
|
// in all copies or substantial portions of the Software. //
|
|
// //
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS //
|
|
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF //
|
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. //
|
|
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY //
|
|
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT //
|
|
// OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR //
|
|
// THE USE OR OTHER DEALINGS IN THE SOFTWARE. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|