⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 limiter.py

📁 Turbo Decoder Release 0.3 * Double binary, DVB-RCS code * Soft Output Viterbi Algorithm * MyHDL c
💻 PY
字号:
##########################################################################                                                              ########  limiter.p                                                   ########                                                              ########  This file is part of the turbo decoder IP core project      ########  http://www.opencores.org/projects/turbocodes/               ########                                                              ########  Author(s):                                                  ########      - David Brochart(dbrochart@opencores.org)               ########                                                              ########  All additional information is available in the README.txt   ########  file.                                                       ########                                                              ##############################################################################                                                              ######## Copyright (C) 2005 Authors                                   ########                                                              ######## 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                     ########                                                              ##########################################################################from myhdl import Signal, always_combdef limiter(a, b, y1, y2, y1Int, y2Int, aLim, bLim, y1Lim, y2Lim, y1IntLim, y2IntLim, n = 4):    """ Limiter [-2**(n - 1) + 1, 2**(n - 1) - 1].    n                                               -- number of bits for the coding of the decoder input signals    a, b, y1, y2, y1Int, y2Int                      -- in  : decoder input signals, coded with n bits    aLim, bLim, y1Lim, y2Lim, y1IntLim, y2IntLim    -- out : limited signals    """    def limitLogic():        if a.val <= -2**(n - 1):            aLim.next = -2**(n - 1) + 1        elif a.val >= 2**(n - 1):            aLim.next = 2**(n - 1) - 1        else:            aLim.next = a.val        if b.val <= -2**(n - 1):            bLim.next = -2**(n - 1) + 1        elif b.val >= 2**(n - 1):            bLim.next = 2**(n - 1) - 1        else:            bLim.next = b.val        if y1.val <= -2**(n - 1):            y1Lim.next = -2**(n - 1) + 1        elif y1.val >= 2**(n - 1):            y1Lim.next = 2**(n - 1) - 1        else:            y1Lim.next = y1.val        if y2.val <= -2**(n - 1):            y2Lim.next = -2**(n - 1) + 1        elif y2.val >= 2**(n - 1):            y2Lim.next = 2**(n - 1) - 1        else:            y2Lim.next = y2.val        if y1Int.val <= -2**(n - 1):            y1IntLim.next = -2**(n - 1) + 1        elif y1Int.val >= 2**(n - 1):            y1IntLim.next = 2**(n - 1) - 1        else:            y1IntLim.next = y1Int.val        if y2Int.val <= -2**(n - 1):            y2IntLim.next = -2**(n - 1) + 1        elif y2Int.val >= 2**(n - 1):            y2IntLim.next = 2**(n - 1) - 1        else:            y2IntLim.next = y2Int.val    return always_comb(limitLogic)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -