From 36d0a8b3e8b58ad57b9ffdc497f3687afe0269ea Mon Sep 17 00:00:00 2001 From: Laszlo Nagy Date: Wed, 3 Mar 2021 11:51:16 +0000 Subject: [PATCH] library:util_pad: Initial version Data to DMA/system memory must be presented in widths of multiple of 8 bits, however this padding is not optimal if is done in the transport layer since this will affect the DAC/ADC FIFO or offload storage. This utility block adds or removes padding from sample stream in case the sample with is not multiple of 8 bits, and can be placed between the DMA and FIFO/Offload blocks. --- library/Makefile | 2 + library/util_pad/Makefile | 13 ++++++ library/util_pad/util_pad.v | 71 ++++++++++++++++++++++++++++++++ library/util_pad/util_pad_ip.tcl | 12 ++++++ 4 files changed, 98 insertions(+) create mode 100644 library/util_pad/Makefile create mode 100644 library/util_pad/util_pad.v create mode 100644 library/util_pad/util_pad_ip.tcl diff --git a/library/Makefile b/library/Makefile index 69e6b2b18..1fdeb88c2 100644 --- a/library/Makefile +++ b/library/Makefile @@ -116,6 +116,7 @@ clean: $(MAKE) -C util_mfifo clean $(MAKE) -C util_pack/util_cpack2 clean $(MAKE) -C util_pack/util_upack2 clean + $(MAKE) -C util_pad clean $(MAKE) -C util_pulse_gen clean $(MAKE) -C util_rfifo clean $(MAKE) -C util_sigma_delta_spi clean @@ -239,6 +240,7 @@ lib: $(MAKE) -C util_mfifo $(MAKE) -C util_pack/util_cpack2 $(MAKE) -C util_pack/util_upack2 + $(MAKE) -C util_pad $(MAKE) -C util_pulse_gen $(MAKE) -C util_rfifo $(MAKE) -C util_sigma_delta_spi diff --git a/library/util_pad/Makefile b/library/util_pad/Makefile new file mode 100644 index 000000000..529e11068 --- /dev/null +++ b/library/util_pad/Makefile @@ -0,0 +1,13 @@ +#################################################################################### +## Copyright (c) 2018 - 2021 Analog Devices, Inc. +### SPDX short identifier: BSD-1-Clause +## Auto-generated, do not modify! +#################################################################################### + +LIBRARY_NAME := util_pad + +GENERIC_DEPS += util_pad.v + +XILINX_DEPS += util_pad_ip.tcl + +include ../scripts/library.mk diff --git a/library/util_pad/util_pad.v b/library/util_pad/util_pad.v new file mode 100644 index 000000000..84caf244b --- /dev/null +++ b/library/util_pad/util_pad.v @@ -0,0 +1,71 @@ +// *************************************************************************** +// *************************************************************************** +// Copyright 2018 (c) Analog Devices, Inc. All rights reserved. +// +// Each core or library found in this collection may have its own licensing terms. +// The user should keep this in in mind while exploring these cores. +// +// Redistribution and use in source and binary forms, +// with or without modification of this file, are permitted under the terms of either +// (at the option of the user): +// +// 1. The GNU General Public License version 2 as published by the +// Free Software Foundation, which can be found in the top level directory, or at: +// https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html +// +// OR +// +// 2. An ADI specific BSD license as noted in the top level directory, or on-line at: +// https://github.com/analogdevicesinc/hdl/blob/dev/LICENSE +// +// *************************************************************************** +// *************************************************************************** + +`timescale 1ns/100ps + +module util_pad #( + parameter NUM_OF_SAMPLES = 2, + parameter IN_BITS_PER_SAMPLE = 16, + parameter OUT_BITS_PER_SAMPLE = 16, + parameter PADDING_TO_MSB_LSB_N = 0, + parameter SIGN_EXTEND = 1 +) ( + input [NUM_OF_SAMPLES*IN_BITS_PER_SAMPLE-1:0] data_in, + output reg [NUM_OF_SAMPLES*OUT_BITS_PER_SAMPLE-1:0] data_out +); + +// Remove padding +if (IN_BITS_PER_SAMPLE >= OUT_BITS_PER_SAMPLE) begin + integer i; + always @(*) begin + for (i=0;i