Warning, file /frameworks/syntax-highlighting/autotests/html/light52_muldiv.vhdl.dark.html was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 <!DOCTYPE html> 0002 <html><head> 0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 0004 <title>light52_muldiv.vhdl</title> 0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (VHDL) - Theme (Breeze Dark)"/> 0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre> 0007 <span style="color:#7a7c7d;">--------------------------------------------------------------------------------</span> 0008 <span style="color:#7a7c7d;">-- light52_muldiv.vhdl -- Simple multiplier/divider module.</span> 0009 <span style="color:#7a7c7d;">--------------------------------------------------------------------------------</span> 0010 <span style="color:#7a7c7d;">-- The 8051 mul and div instructions are both unsigned and operands are 8 bit.</span> 0011 <span style="color:#7a7c7d;">--</span> 0012 <span style="color:#7a7c7d;">-- This module implements the division as a sequential state machine which takes</span> 0013 <span style="color:#7a7c7d;">-- 8 cycles to complete. </span> 0014 <span style="color:#7a7c7d;">-- The multiplier can be implemented as sequential or as combinational, in which</span> 0015 <span style="color:#7a7c7d;">-- case it will use a DSP block in those architectures that support it.</span> 0016 <span style="color:#7a7c7d;">-- No attempt has been made to make this module generic or reusable.</span> 0017 <span style="color:#7a7c7d;">--</span> 0018 <span style="color:#7a7c7d;">-- If you want a combinational multiplier but don't want to waste a DSP block </span> 0019 <span style="color:#7a7c7d;">-- in this module, you need to modify this file adding whatever synthesis </span> 0020 <span style="color:#7a7c7d;">-- pragmas your tool of choice needs.</span> 0021 <span style="color:#7a7c7d;">--</span> 0022 <span style="color:#7a7c7d;">-- Note that unlike the division state machine, the combinational product logic</span> 0023 <span style="color:#7a7c7d;">-- is always operating: when SEQUENTIAL_MULTIPLIER=true, prod_out equals </span> 0024 <span style="color:#7a7c7d;">-- data_a * data_b with a latency of 1 clock cycle, and mul_ready is hardwired</span> 0025 <span style="color:#7a7c7d;">-- to '1'.</span> 0026 <span style="color:#7a7c7d;">--</span> 0027 <span style="color:#7a7c7d;">-- </span><span style="color:#ca9219;background-color:#451e1a;font-weight:bold;">FIXME</span><span style="color:#7a7c7d;"> explain division algorithm.</span> 0028 <span style="color:#7a7c7d;">--------------------------------------------------------------------------------</span> 0029 <span style="color:#7a7c7d;">-- GENERICS:</span> 0030 <span style="color:#7a7c7d;">-- </span> 0031 <span style="color:#7a7c7d;">-- SEQUENTIAL_MULTIPLIER -- Sequential vs. combinational multiplier.</span> 0032 <span style="color:#7a7c7d;">-- When true, a sequential implementation will be used for the multiplier, </span> 0033 <span style="color:#7a7c7d;">-- which will usually save a lot of logic or a dedicated multiplier.</span> 0034 <span style="color:#7a7c7d;">-- When false, a combinational registered multiplier will be used.</span> 0035 <span style="color:#7a7c7d;">--</span> 0036 <span style="color:#7a7c7d;">--------------------------------------------------------------------------------</span> 0037 <span style="color:#7a7c7d;">-- INTERFACE SIGNALS:</span> 0038 <span style="color:#7a7c7d;">--</span> 0039 <span style="color:#7a7c7d;">-- clk : Clock, active rising edge.</span> 0040 <span style="color:#7a7c7d;">-- reset : Synchronous reset. Clears only the control registers not</span> 0041 <span style="color:#7a7c7d;">-- visible to the programmer -- not the output registers.</span> 0042 <span style="color:#7a7c7d;">-- </span> 0043 <span style="color:#7a7c7d;">-- data_a : Numerator input, should be connected to the ACC register.</span> 0044 <span style="color:#7a7c7d;">-- data_b : Denominator input, should be connected to the B register.</span> 0045 <span style="color:#7a7c7d;">-- start : Assert for 1 cycle to start the division state machine</span> 0046 <span style="color:#7a7c7d;">-- (and the product if SEQUENTIAL_MULTIPLIER=true);</span> 0047 <span style="color:#7a7c7d;">-- </span> 0048 <span style="color:#7a7c7d;">-- prod_out : Product output, valid only when mul_ready='1'.</span> 0049 <span style="color:#7a7c7d;">-- quot_out : Quotient output, valid only when div_ready='1'.</span> 0050 <span style="color:#7a7c7d;">-- rem_out : Remainder output, valid only when div_ready='1'.</span> 0051 <span style="color:#7a7c7d;">-- div_ov_out : Division overflow flag, valid only when div_ready='1'.</span> 0052 <span style="color:#7a7c7d;">-- mul_ov_out : Product overflow flag, valid only when mul_ready='1'.</span> 0053 <span style="color:#7a7c7d;">-- </span> 0054 <span style="color:#7a7c7d;">-- mul_ready : Asserted permanently if SEQUENTIAL_MULTIPLIER=false.</span> 0055 <span style="color:#7a7c7d;">-- div_ready : Deasserted the cycle after start is asserted.</span> 0056 <span style="color:#7a7c7d;">-- Asserted when the division has completed.</span> 0057 <span style="color:#7a7c7d;">--</span> 0058 <span style="color:#7a7c7d;">--------------------------------------------------------------------------------</span> 0059 <span style="color:#7a7c7d;">-- Copyright (C) 2012 Jose A. Ruiz</span> 0060 <span style="color:#7a7c7d;">-- </span> 0061 <span style="color:#7a7c7d;">-- This source file may be used and distributed without </span> 0062 <span style="color:#7a7c7d;">-- restriction provided that this copyright statement is not </span> 0063 <span style="color:#7a7c7d;">-- removed from the file and that any derivative work contains </span> 0064 <span style="color:#7a7c7d;">-- the original copyright notice and the associated disclaimer. </span> 0065 <span style="color:#7a7c7d;">-- </span> 0066 <span style="color:#7a7c7d;">-- This source file is free software; you can redistribute it </span> 0067 <span style="color:#7a7c7d;">-- and/or modify it under the terms of the GNU Lesser General </span> 0068 <span style="color:#7a7c7d;">-- Public License as published by the Free Software Foundation; </span> 0069 <span style="color:#7a7c7d;">-- either version 2.1 of the License, or (at your option) any </span> 0070 <span style="color:#7a7c7d;">-- later version. </span> 0071 <span style="color:#7a7c7d;">-- </span> 0072 <span style="color:#7a7c7d;">-- This source is distributed in the hope that it will be </span> 0073 <span style="color:#7a7c7d;">-- useful, but WITHOUT ANY WARRANTY; without even the implied </span> 0074 <span style="color:#7a7c7d;">-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR </span> 0075 <span style="color:#7a7c7d;">-- PURPOSE. See the GNU Lesser General Public License for more </span> 0076 <span style="color:#7a7c7d;">-- details. </span> 0077 <span style="color:#7a7c7d;">-- </span> 0078 <span style="color:#7a7c7d;">-- You should have received a copy of the GNU Lesser General </span> 0079 <span style="color:#7a7c7d;">-- Public License along with this source; if not, download it </span> 0080 <span style="color:#7a7c7d;">-- from http://www.opencores.org/lgpl.shtml</span> 0081 <span style="color:#7a7c7d;">--------------------------------------------------------------------------------</span> 0082 0083 <span style="font-weight:bold;">library</span> ieee; 0084 <span style="font-weight:bold;">use</span> ieee<span style="color:#27ae60;">.</span>std_logic_1164<span style="color:#27ae60;">.</span><span style="font-weight:bold;">all</span>; 0085 <span style="font-weight:bold;">use</span> ieee<span style="color:#27ae60;">.</span>numeric_std<span style="color:#27ae60;">.</span><span style="font-weight:bold;">all</span>; 0086 0087 <span style="font-weight:bold;">use</span> work<span style="color:#27ae60;">.</span>light52_pkg<span style="color:#27ae60;">.</span><span style="font-weight:bold;">all</span>; 0088 <span style="font-weight:bold;">use</span> work<span style="color:#27ae60;">.</span>light52_ucode_pkg<span style="color:#27ae60;">.</span><span style="font-weight:bold;">all</span>; 0089 0090 <span style="color:#fdbc4b;font-weight:bold;">entity</span> <span style="color:#f67400;font-weight:bold;">light52_muldiv</span> <span style="font-weight:bold;">is</span> 0091 <span style="color:#fdbc4b;font-weight:bold;">generic</span> ( 0092 SEQUENTIAL_MULTIPLIER <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">boolean</span> <span style="color:#27ae60;">:=</span> <span style="font-weight:bold;">false</span> 0093 ); 0094 <span style="color:#fdbc4b;font-weight:bold;">port</span>( 0095 clk <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">in</span> <span style="color:#2980b9;">std_logic</span>; 0096 reset <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">in</span> <span style="color:#2980b9;">std_logic</span>; 0097 0098 data_a <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">in</span> t_byte; 0099 data_b <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">in</span> t_byte; 0100 start <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">in</span> <span style="color:#2980b9;">std_logic</span>; 0101 0102 prod_out <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">out</span> t_word; 0103 quot_out <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">out</span> t_byte; 0104 rem_out <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">out</span> t_byte; 0105 div_ov_out <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">out</span> <span style="color:#2980b9;">std_logic</span>; 0106 mul_ov_out <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">out</span> <span style="color:#2980b9;">std_logic</span>; 0107 0108 mul_ready <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">out</span> <span style="color:#2980b9;">std_logic</span>; 0109 div_ready <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">out</span> <span style="color:#2980b9;">std_logic</span> 0110 ); 0111 <span style="color:#fdbc4b;font-weight:bold;">end entity light52_muldiv;</span> 0112 0113 <span style="color:#fdbc4b;font-weight:bold;">architecture</span> <span style="color:#f67400;font-weight:bold;">sequential</span> <span style="font-weight:bold;">of</span> <span style="color:#8e44ad;">light52_muldiv</span> <span style="font-weight:bold;">is</span> 0114 0115 <span style="color:#27ae60;">signal</span> bit_ctr <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">integer</span> <span style="font-weight:bold;">range</span> <span style="color:#f67400;">0</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">8</span>; 0116 0117 <span style="color:#27ae60;">signal</span> b_shift_reg <span style="color:#27ae60;">:</span> t_word; 0118 0119 <span style="color:#27ae60;">signal</span> den_ge_256 <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">std_logic</span>; 0120 <span style="color:#27ae60;">signal</span> num_ge_den <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">std_logic</span>; 0121 <span style="color:#27ae60;">signal</span> sub_num <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">std_logic</span>; 0122 0123 <span style="color:#27ae60;">signal</span> denominator <span style="color:#27ae60;">:</span> t_byte; 0124 <span style="color:#27ae60;">signal</span> rem_reg <span style="color:#27ae60;">:</span> t_byte; 0125 <span style="color:#27ae60;">signal</span> quot_reg <span style="color:#27ae60;">:</span> t_byte; 0126 <span style="color:#27ae60;">signal</span> prod_reg <span style="color:#27ae60;">:</span> t_word; 0127 <span style="color:#27ae60;">signal</span> ready <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">std_logic</span>; 0128 0129 <span style="color:#27ae60;">signal</span> load_regs <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">std_logic</span>; 0130 0131 <span style="color:#fdbc4b;font-weight:bold;">begin</span> 0132 0133 <span style="color:#7a7c7d;">-- Control logic ---------------------------------------------------------------</span> 0134 0135 <span style="color:#f67400;font-weight:bold;">control_counter</span><span style="color:#27ae60;">:</span> <span style="color:#3daee9;font-weight:bold;">process</span>(clk) 0136 <span style="font-weight:bold;">alias</span> sig <span style="font-weight:bold;">is</span> <span style="color:#27ae60;"><<</span><span style="color:#27ae60;">signal</span> g_test(<span style="color:#f67400;">0</span>)<span style="color:#27ae60;">.</span>i_test<span style="color:#27ae60;">.</span>sig <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">std_logic</span><span style="color:#27ae60;">>></span>; 0137 <span style="color:#3daee9;font-weight:bold;">begin</span> 0138 <span style="color:#fdbc4b;font-weight:bold;">if</span> clk<span style="color:#f67400;">'event</span> <span style="font-weight:bold;">and</span> clk<span style="color:#27ae60;">=</span><span style="color:#f67400;">'1'</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0139 <span style="color:#fdbc4b;font-weight:bold;">if</span> reset<span style="color:#27ae60;">=</span><span style="color:#f67400;">'1'</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0140 bit_ctr <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">8</span>; 0141 <span style="color:#fdbc4b;font-weight:bold;">else</span> 0142 <span style="color:#fdbc4b;font-weight:bold;">if</span> load_regs<span style="color:#27ae60;">=</span><span style="color:#f67400;">'1'</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0143 bit_ctr <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">0</span>; 0144 <span style="color:#fdbc4b;font-weight:bold;">elsif</span> bit_ctr <span style="color:#27ae60;">/=</span> <span style="color:#f67400;">8</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0145 bit_ctr <span style="color:#27ae60;"><=</span> bit_ctr <span style="color:#27ae60;">+</span> <span style="color:#f67400;">1</span>; 0146 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0147 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0148 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0149 <span style="color:#3daee9;font-weight:bold;">end process control_counter;</span> 0150 0151 <span style="color:#7a7c7d;">-- Internal signal ready is asserted after 8 cycles.</span> 0152 <span style="color:#7a7c7d;">-- The sequential multiplier will use this signal too, IF it takes 8 cycles.</span> 0153 0154 ready <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">'1'</span> <span style="font-weight:bold;">when</span> bit_ctr <span style="color:#27ae60;">>=</span> <span style="color:#f67400;">8</span> <span style="font-weight:bold;">else</span> <span style="color:#f67400;">'0'</span>; 0155 0156 0157 <span style="color:#7a7c7d;">---- Divider logic -------------------------------------------------------------</span> 0158 0159 <span style="color:#7a7c7d;">-- What we do is a simple base-2 'shift-and-subtract' algorithm that takes</span> 0160 <span style="color:#7a7c7d;">-- 8 cycles to complete. We can get away with this because we deal with unsigned</span> 0161 <span style="color:#7a7c7d;">-- numbers only.</span> 0162 0163 <span style="color:#f67400;font-weight:bold;">divider_registers</span><span style="color:#27ae60;">:</span> <span style="color:#3daee9;font-weight:bold;">process</span>(clk) 0164 <span style="color:#3daee9;font-weight:bold;">begin</span> 0165 <span style="color:#fdbc4b;font-weight:bold;">if</span> clk<span style="color:#f67400;">'event</span> <span style="font-weight:bold;">and</span> clk<span style="color:#27ae60;">=</span><span style="color:#f67400;">'1'</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0166 <span style="color:#7a7c7d;">-- denominator shift register</span> 0167 <span style="color:#fdbc4b;font-weight:bold;">if</span> load_regs<span style="color:#27ae60;">=</span><span style="color:#f67400;">'1'</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0168 b_shift_reg <span style="color:#27ae60;"><=</span> <span style="color:#f44f4f;">"0"</span> <span style="color:#27ae60;">&</span> data_b <span style="color:#27ae60;">&</span> <span style="color:#f44f4f;">"0000000"</span>; 0169 <span style="color:#7a7c7d;">-- Division overflow can be determined upon loading B reg data.</span> 0170 <span style="color:#7a7c7d;">-- OV will be raised only on div-by-zero.</span> 0171 <span style="color:#fdbc4b;font-weight:bold;">if</span> data_b<span style="color:#27ae60;">=</span>X<span style="color:#f44f4f;">"00"</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0172 div_ov_out <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">'1'</span>; 0173 <span style="color:#fdbc4b;font-weight:bold;">else</span> 0174 div_ov_out <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">'0'</span>; 0175 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0176 <span style="color:#fdbc4b;font-weight:bold;">else</span> 0177 b_shift_reg <span style="color:#27ae60;"><=</span> <span style="color:#f44f4f;">"0"</span> <span style="color:#27ae60;">&</span> b_shift_reg(b_shift_reg<span style="color:#f67400;">'high</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">1</span>); 0178 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0179 0180 <span style="color:#7a7c7d;">-- numerator register</span> 0181 <span style="color:#fdbc4b;font-weight:bold;">if</span> load_regs<span style="color:#27ae60;">=</span><span style="color:#f67400;">'1'</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0182 rem_reg <span style="color:#27ae60;"><=</span> data_a; 0183 <span style="color:#fdbc4b;font-weight:bold;">elsif</span> bit_ctr<span style="color:#27ae60;">/=</span><span style="color:#f67400;">8</span> <span style="font-weight:bold;">and</span> sub_num<span style="color:#27ae60;">=</span><span style="color:#f67400;">'1'</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0184 rem_reg <span style="color:#27ae60;"><=</span> rem_reg <span style="color:#27ae60;">-</span> denominator; 0185 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0186 0187 <span style="color:#7a7c7d;">--- quotient register</span> 0188 <span style="color:#fdbc4b;font-weight:bold;">if</span> load_regs<span style="color:#27ae60;">=</span><span style="color:#f67400;">'1'</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0189 quot_reg <span style="color:#27ae60;"><=</span> (<span style="color:#27ae60;">others</span> <span style="color:#27ae60;">=></span> <span style="color:#f67400;">'0'</span>); 0190 <span style="color:#fdbc4b;font-weight:bold;">elsif</span> bit_ctr<span style="color:#27ae60;">/=</span><span style="color:#f67400;">8</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0191 quot_reg <span style="color:#27ae60;"><=</span> quot_reg(quot_reg<span style="color:#f67400;">'high-1</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">0</span>) <span style="color:#27ae60;">&</span> sub_num; 0192 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0193 0194 load_regs <span style="color:#27ae60;"><=</span> start; 0195 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0196 <span style="color:#3daee9;font-weight:bold;">end process divider_registers;</span> 0197 0198 denominator <span style="color:#27ae60;"><=</span> b_shift_reg(<span style="color:#f67400;">7</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">0</span>); 0199 0200 <span style="color:#7a7c7d;">-- The 16-bit comparison between b_shift_reg (denominator) and the zero-extended </span> 0201 <span style="color:#7a7c7d;">-- rem_reg (numerator) can be simplified by splitting it in 2: </span> 0202 <span style="color:#7a7c7d;">-- If the shifted denominator high byte is not zero, it is >=256...</span> 0203 den_ge_256 <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">'1'</span> <span style="font-weight:bold;">when</span> b_shift_reg(<span style="color:#f67400;">15</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">8</span>) <span style="color:#27ae60;">/=</span> X<span style="color:#f44f4f;">"00"</span> <span style="font-weight:bold;">else</span> <span style="color:#f67400;">'0'</span>; 0204 <span style="color:#7a7c7d;">-- ...otherwise we need to compare the low bytes.</span> 0205 num_ge_den <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">'1'</span> <span style="font-weight:bold;">when</span> rem_reg <span style="color:#27ae60;">>=</span> denominator <span style="font-weight:bold;">else</span> <span style="color:#f67400;">'0'</span>; 0206 sub_num <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">'1'</span> <span style="font-weight:bold;">when</span> den_ge_256<span style="color:#27ae60;">=</span><span style="color:#f67400;">'0'</span> <span style="font-weight:bold;">and</span> num_ge_den<span style="color:#27ae60;">=</span><span style="color:#f67400;">'1'</span> <span style="font-weight:bold;">else</span> <span style="color:#f67400;">'0'</span>; 0207 0208 0209 quot_out <span style="color:#27ae60;"><=</span> quot_reg; 0210 prod_out <span style="color:#27ae60;"><=</span> prod_reg; 0211 rem_out <span style="color:#27ae60;"><=</span> rem_reg; 0212 0213 div_ready <span style="color:#27ae60;"><=</span> ready; 0214 0215 <span style="color:#7a7c7d;">---- Multiplier logic ----------------------------------------------------------</span> 0216 0217 <span style="color:#7a7c7d;">---- Combinational multiplier -----------------------------</span> 0218 <span style="color:#f67400;font-weight:bold;">multiplier_combinational</span><span style="color:#27ae60;">:</span> <span style="color:#fdbc4b;font-weight:bold;">if</span> <span style="font-weight:bold;">not</span> SEQUENTIAL_MULTIPLIER <span style="color:#fdbc4b;font-weight:bold;">generate</span> 0219 0220 <span style="color:#f67400;font-weight:bold;">registered_combinational_multiplier</span><span style="color:#27ae60;">:</span><span style="color:#3daee9;font-weight:bold;">process</span>(clk) 0221 <span style="color:#3daee9;font-weight:bold;">begin</span> 0222 <span style="color:#fdbc4b;font-weight:bold;">if</span> clk<span style="color:#f67400;">'event</span> <span style="font-weight:bold;">and</span> clk<span style="color:#27ae60;">=</span><span style="color:#f67400;">'1'</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0223 prod_reg <span style="color:#27ae60;"><=</span> data_a <span style="color:#27ae60;">*</span> data_b; <span style="color:#7a7c7d;">-- t_byte is unsigned</span> 0224 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0225 <span style="color:#3daee9;font-weight:bold;">end process registered_combinational_multiplier;</span> 0226 0227 <span style="color:#7a7c7d;">-- The multiplier output is valid in the cycle after the operands are loaded,</span> 0228 <span style="color:#7a7c7d;">-- so by the time MUL is executed it's already done.</span> 0229 mul_ready <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">'1'</span>; 0230 0231 mul_ov_out <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">'1'</span> <span style="font-weight:bold;">when</span> prod_reg(<span style="color:#f67400;">15</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">8</span>)<span style="color:#27ae60;">/=</span>X<span style="color:#f44f4f;">"00"</span> <span style="font-weight:bold;">else</span> <span style="color:#f67400;">'0'</span>; 0232 prod_out <span style="color:#27ae60;"><=</span> prod_reg; 0233 0234 <span style="color:#fdbc4b;font-weight:bold;">end generate multiplier_combinational;</span> 0235 0236 <span style="color:#7a7c7d;">---- Sequential multiplier --------------------------------</span> 0237 <span style="color:#f67400;font-weight:bold;">multiplier_sequential</span><span style="color:#27ae60;">:</span> <span style="color:#fdbc4b;font-weight:bold;">if</span> SEQUENTIAL_MULTIPLIER <span style="color:#fdbc4b;font-weight:bold;">generate</span> 0238 0239 <span style="font-weight:bold;">assert</span> <span style="font-weight:bold;">false</span> 0240 <span style="font-weight:bold;">report</span> <span style="color:#f44f4f;">"Sequential multiplier implementation not done yet."</span><span style="color:#27ae60;">&</span> 0241 <span style="color:#f44f4f;">" Use combinational implementation."</span> 0242 <span style="font-weight:bold;">severity</span> <span style="font-weight:bold;">failure</span>; 0243 0244 <span style="color:#fdbc4b;font-weight:bold;">end generate multiplier_sequential;</span> 0245 0246 <span style="color:#fdbc4b;font-weight:bold;">end sequential;</span> 0247 0248 0249 <span style="font-weight:bold;">with</span> Types; <span style="font-weight:bold;">use</span> Types; 0250 <span style="font-weight:bold;">with</span> Files_Map; 0251 0252 <span style="color:#fdbc4b;font-weight:bold;">package</span> <span style="color:#f67400;font-weight:bold;">fixed_pkg</span> <span style="font-weight:bold;">is</span> <span style="font-weight:bold;">new</span> <span style="color:#f67400;font-weight:bold;">IEEE</span><span style="color:#27ae60;">.</span>fixed_generic_pkg 0253 <span style="font-weight:bold;">generic map </span>( 0254 fixed_overflow_style <span style="color:#27ae60;">=></span> IEEE<span style="color:#27ae60;">.</span>fixed_float_types<span style="color:#27ae60;">.</span>fixed_saturate<span style="color:#27ae60;">,</span> 0255 fixed_guard_bits <span style="color:#27ae60;">=></span> <span style="color:#f67400;">3</span><span style="color:#27ae60;">,</span> 0256 no_warning <span style="color:#27ae60;">=></span> <span style="font-weight:bold;">false</span> 0257 ); 0258 0259 <span style="color:#fdbc4b;font-weight:bold;">package</span> <span style="color:#f67400;font-weight:bold;">p</span> <span style="font-weight:bold;">is</span> 0260 <span style="color:#27ae60;">type</span> int_ptr <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">access</span> <span style="color:#2980b9;">integer</span>; 0261 <span style="color:#27ae60;">type</span> rec <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">record</span> 0262 data <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">std_logic_vector</span>(<span style="color:#f67400;">31</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">0</span>); 0263 ack <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">std_logic</span>; 0264 value <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">integer</span>; 0265 link <span style="color:#27ae60;">:</span> rec_ptr; 0266 <span style="font-weight:bold;">end record;</span> 0267 <span style="color:#27ae60;">type</span> int_vec <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">array</span> (<span style="color:#2980b9;">integer</span> <span style="font-weight:bold;">range</span> <span style="color:#27ae60;"><></span>) <span style="font-weight:bold;">of</span> <span style="color:#2980b9;">integer</span>; 0268 <span style="color:#27ae60;">type</span> int_vec_ptr <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">access</span> int_vec; 0269 <span style="font-weight:bold;">procedure</span> <span style="color:#f67400;font-weight:bold;">UNIFORM</span>(<span style="color:#27ae60;">variable</span> SEED1<span style="color:#27ae60;">,</span> SEED2 <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">inout</span> <span style="color:#2980b9;">POSITIVE</span>; <span style="color:#27ae60;">variable</span> X <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">out</span> <span style="color:#2980b9;">REAL</span>); 0270 <span style="color:#27ae60;">constant</span> def_arr <span style="color:#27ae60;">:</span> t_int_array <span style="color:#27ae60;">:=</span> (<span style="color:#f67400;">0</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">2</span> <span style="color:#27ae60;">=></span> <span style="color:#f67400;">10</span>); 0271 0272 <span style="color:#7a7c7d;">-- type range</span> 0273 <span style="color:#27ae60;">type</span> newInt <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">range</span> <span style="color:#27ae60;">-</span><span style="color:#f67400;">4</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">3</span>; 0274 <span style="color:#27ae60;">type</span> CAPACITY <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">range</span> <span style="color:#f67400;">0</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">1</span><span style="color:#f67400;">E5</span> <span style="color:#fdbc4b;font-weight:bold;">units</span> 0275 pF; 0276 nF <span style="color:#27ae60;">=</span> <span style="color:#f67400;">1000</span> pF; 0277 <span style="color:#fdbc4b;font-weight:bold;">end units;</span> 0278 0279 <span style="color:#7a7c7d;">-- type protected</span> 0280 <span style="color:#27ae60;">type</span> prot <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">protected</span> 0281 <span style="color:#2980b9;font-weight:bold;">function</span> <span style="color:#f67400;font-weight:bold;">meth</span>(a <span style="color:#27ae60;">:</span> int) <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#2980b9;">bit</span>; 0282 <span style="font-weight:bold;">end protected;</span> 0283 0284 <span style="color:#7a7c7d;">-- type protected body</span> 0285 <span style="color:#27ae60;">type</span> prot <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">protected</span> <span style="font-weight:bold;">body</span> 0286 <span style="color:#27ae60;">variable</span> var <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">positive</span>; 0287 <span style="color:#27ae60;">constant</span> const <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">boolean</span>; 0288 0289 <span style="color:#2980b9;font-weight:bold;">function</span> <span style="color:#f67400;font-weight:bold;">meth</span>(a <span style="color:#27ae60;">:</span> int) <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#2980b9;">bit</span> <span style="font-weight:bold;">is</span> 0290 <span style="color:#2980b9;font-weight:bold;">begin</span> 0291 <span style="color:#2980b9;font-weight:bold;">end function;</span> 0292 <span style="font-weight:bold;">end protected body;</span> 0293 0294 <span style="color:#2980b9;font-weight:bold;">function</span> <span style="color:#f67400;font-weight:bold;">\?=\</span> (L<span style="color:#27ae60;">,</span> R <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">BOOLEAN</span>) <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#2980b9;">BOOLEAN</span>; 0295 0296 <span style="color:#fdbc4b;font-weight:bold;">end package;</span> 0297 0298 <span style="color:#fdbc4b;font-weight:bold;">package</span> <span style="color:#fdbc4b;font-weight:bold;">body</span> <span style="color:#f67400;font-weight:bold;">p</span> <span style="font-weight:bold;">is</span> 0299 <span style="color:#2980b9;font-weight:bold;">function</span> <span style="color:#f67400;font-weight:bold;">\?=\</span> (L<span style="color:#27ae60;">,</span> R <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">BOOLEAN</span>) <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#2980b9;">BOOLEAN</span> <span style="font-weight:bold;">is</span> 0300 <span style="color:#2980b9;font-weight:bold;">begin</span> 0301 <span style="color:#fdbc4b;font-weight:bold;">if</span> <span style="font-weight:bold;">not</span> (format(format<span style="color:#f67400;">'left</span>) <span style="color:#27ae60;">=</span> <span style="color:#f67400;">'%'</span>) <span style="color:#fdbc4b;font-weight:bold;">then</span> 0302 <span style="font-weight:bold;">report</span> <span style="color:#f44f4f;">"to_string: Illegal format string """</span> <span style="color:#27ae60;">&</span> format <span style="color:#27ae60;">&</span> <span style="color:#f67400;">'"'</span> 0303 <span style="font-weight:bold;">severity</span> <span style="font-weight:bold;">error</span>; 0304 <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#f44f4f;">""</span>; 0305 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0306 <span style="color:#fdbc4b;font-weight:bold;">return</span> L <span style="color:#27ae60;">=</span> R; 0307 <span style="color:#2980b9;font-weight:bold;">end function \?=\;</span> 0308 0309 <span style="font-weight:bold;">procedure</span> <span style="color:#f67400;font-weight:bold;">test</span> <span style="color:#fdbc4b;font-weight:bold;">is</span> 0310 <span style="color:#27ae60;">variable</span> v <span style="color:#27ae60;">:</span> int_ptr; 0311 <span style="color:#27ae60;">variable</span> i <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">integer</span>; 0312 <span style="font-weight:bold;">begin</span> 0313 v <span style="color:#27ae60;">:=</span> <span style="font-weight:bold;">null</span>; 0314 deallocate(v); 0315 v <span style="color:#27ae60;">:=</span> <span style="font-weight:bold;">new</span> <span style="color:#2980b9;">integer</span>; 0316 v <span style="color:#27ae60;">:=</span> <span style="font-weight:bold;">new</span> integer<span style="color:#f67400;">'(5)</span>; 0317 v<span style="color:#27ae60;">.</span><span style="font-weight:bold;">all</span> <span style="color:#27ae60;">:=</span> <span style="color:#f67400;">5</span>; 0318 r<span style="color:#27ae60;">.</span><span style="font-weight:bold;">all</span><span style="color:#27ae60;">.</span>value <span style="color:#27ae60;">:=</span> <span style="color:#f67400;">1</span>; 0319 a <span style="color:#27ae60;">:=</span> <span style="font-weight:bold;">new</span> int_vec(<span style="color:#f67400;">1</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">3</span>); 0320 a<span style="color:#27ae60;">.</span><span style="font-weight:bold;">all</span>(<span style="color:#f67400;">5</span>) <span style="color:#27ae60;">:=</span> <span style="color:#f67400;">2</span>; 0321 a(<span style="color:#f67400;">1</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">2</span>) <span style="color:#27ae60;">:=</span> (<span style="color:#f67400;">1</span><span style="color:#27ae60;">,</span> <span style="color:#f67400;">2</span>); 0322 s <span style="color:#27ae60;">:=</span> <span style="font-weight:bold;">new</span> string<span style="color:#f67400;">'("")</span>; 0323 <span style="font-weight:bold;">end procedure;</span> 0324 0325 <span style="font-weight:bold;">procedure</span> <span style="color:#f67400;font-weight:bold;">test2</span>(x <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">inout</span> rec_ptr) <span style="color:#fdbc4b;font-weight:bold;">is</span> 0326 <span style="font-weight:bold;">begin</span> 0327 x<span style="color:#27ae60;">.</span>value <span style="color:#27ae60;">:=</span> x<span style="color:#27ae60;">.</span>value <span style="color:#27ae60;">+</span> <span style="color:#f67400;">1</span>; 0328 <span style="font-weight:bold;">end procedure;</span> 0329 0330 <span style="font-weight:bold;">procedure</span> <span style="color:#f67400;font-weight:bold;">test3</span> <span style="color:#fdbc4b;font-weight:bold;">is</span> 0331 <span style="color:#27ae60;">type</span> a; 0332 <span style="color:#27ae60;">type</span> a <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">access</span> <span style="color:#2980b9;">integer</span>; 0333 <span style="color:#27ae60;">variable</span> v <span style="color:#27ae60;">:</span> a; 0334 <span style="font-weight:bold;">begin</span> 0335 <span style="font-weight:bold;">end procedure;</span> 0336 0337 <span style="color:#27ae60;">type</span> int_ptr_array <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">array</span> (<span style="color:#2980b9;">integer</span> <span style="font-weight:bold;">range</span> <span style="color:#27ae60;"><></span>) <span style="font-weight:bold;">of</span> int_ptr; 0338 0339 <span style="font-weight:bold;">procedure</span> <span style="color:#f67400;font-weight:bold;">tets4</span> <span style="color:#fdbc4b;font-weight:bold;">is</span> 0340 <span style="color:#27ae60;">type</span> bvp <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">access</span> <span style="color:#2980b9;">bit_vector</span>; 0341 <span style="color:#27ae60;">variable</span> y <span style="color:#27ae60;">:</span> int_ptr(<span style="color:#f67400;">1</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">3</span>) <span style="color:#27ae60;">:=</span> int_ptr<span style="color:#f67400;">'(null)</span>; 0342 <span style="font-weight:bold;">begin</span> 0343 <span style="font-weight:bold;">end procedure;</span> 0344 0345 <span style="font-weight:bold;">procedure</span> <span style="color:#f67400;font-weight:bold;">Restore_Origin</span> (Mark <span style="color:#27ae60;">:</span> Instance_Index_Type) <span style="color:#fdbc4b;font-weight:bold;">is</span> 0346 <span style="font-weight:bold;">begin</span> 0347 <span style="color:#fdbc4b;font-weight:bold;">for</span> I <span style="font-weight:bold;">in</span> reverse Mark <span style="color:#27ae60;">+</span> <span style="color:#f67400;">1</span> <span style="color:#27ae60;">..</span> Prev_Instance_Table<span style="color:#27ae60;">.</span>Last <span style="color:#fdbc4b;font-weight:bold;">loop</span> 0348 <span style="font-weight:bold;">declare</span> 0349 El <span style="color:#27ae60;">:</span> Instance_Entry_Type renames Prev_Instance_Table<span style="color:#27ae60;">.</span>Table (I); 0350 <span style="font-weight:bold;">begin</span> 0351 Origin_Table<span style="color:#27ae60;">.</span>Table (El<span style="color:#27ae60;">.</span>N) <span style="color:#27ae60;">:=</span> El<span style="color:#27ae60;">.</span>Old_Origin; 0352 <span style="font-weight:bold;">end;</span> 0353 <span style="color:#fdbc4b;font-weight:bold;">end loop;</span> 0354 Prev_Instance_Table<span style="color:#27ae60;">.</span>Set_Last (Mark); 0355 <span style="font-weight:bold;">end Restore_Origin;</span> 0356 0357 <span style="color:#7a7c7d;">-- Instantiate a list. Simply create a new list and instantiate nodes of</span> 0358 <span style="color:#7a7c7d;">-- that list.</span> 0359 <span style="color:#2980b9;font-weight:bold;">function</span> <span style="color:#f67400;font-weight:bold;">Instantiate_Iir_List</span> (L <span style="color:#27ae60;">:</span> Iir_List; Is_Ref <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">Boolean</span>) 0360 <span style="color:#fdbc4b;font-weight:bold;">return</span> Iir_List 0361 <span style="font-weight:bold;">is</span> 0362 Res <span style="color:#27ae60;">:</span> Iir_List; 0363 El <span style="color:#27ae60;">:</span> Iir; 0364 <span style="color:#2980b9;font-weight:bold;">begin</span> 0365 <span style="color:#fdbc4b;font-weight:bold;">case</span> to_integer(<span style="color:#2980b9;">unsigned</span>(CTRL_REF(x<span style="color:#27ae60;">*</span><span style="color:#f67400;">4</span><span style="color:#27ae60;">+</span><span style="color:#f67400;">3</span> <span style="color:#27ae60;">downto</span> x<span style="color:#27ae60;">*</span><span style="color:#f67400;">4</span>))) <span style="font-weight:bold;">is</span> 0366 <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#f67400;font-weight:bold;">Null_Iir_List</span> 0367 <span style="color:#27ae60;">|</span> <span style="color:#f67400;font-weight:bold;">Iir_List_All</span> <span style="color:#27ae60;">=></span> 0368 <span style="color:#fdbc4b;font-weight:bold;">return</span> L; 0369 <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="font-weight:bold;">others</span> <span style="color:#27ae60;">=></span> 0370 It <span style="color:#27ae60;">:=</span> List_Iterate (L); 0371 <span style="color:#fdbc4b;font-weight:bold;">while</span> Is_Valid (It) <span style="color:#fdbc4b;font-weight:bold;">loop</span> 0372 El <span style="color:#27ae60;">:=</span> Get_Element (It); 0373 Append_Element (Res<span style="color:#27ae60;">,</span> Instantiate_Iir (El<span style="color:#27ae60;">,</span> Is_Ref)); 0374 <span style="color:#fdbc4b;font-weight:bold;">end loop;</span> 0375 <span style="color:#fdbc4b;font-weight:bold;">for</span> I <span style="font-weight:bold;">in</span> Flist_First <span style="color:#27ae60;">..</span> Flist_Last (L) <span style="color:#fdbc4b;font-weight:bold;">loop</span> 0376 Set_Nth_Element (Res<span style="color:#27ae60;">,</span> I<span style="color:#27ae60;">,</span> Instantiate_Iir (El<span style="color:#27ae60;">,</span> Is_Ref)); 0377 <span style="color:#fdbc4b;font-weight:bold;">end loop;</span> 0378 <span style="color:#fdbc4b;font-weight:bold;">return</span> Res; 0379 <span style="color:#fdbc4b;font-weight:bold;">end case;</span> 0380 <span style="color:#2980b9;font-weight:bold;">end Instantiate_Iir_List;</span> 0381 <span style="color:#fdbc4b;font-weight:bold;">end package body;</span> 0382 0383 <span style="color:#7a7c7d;">-- Library bar</span> 0384 <span style="font-weight:bold;">context</span> foo<span style="color:#27ae60;">.</span>test_context; 0385 0386 <span style="font-weight:bold;">context</span> <span style="color:#f67400;font-weight:bold;">foo</span> <span style="font-weight:bold;">is</span> 0387 <span style="font-weight:bold;">context</span> foo<span style="color:#27ae60;">.</span>test_context; 0388 <span style="font-weight:bold;">end context foo;</span> 0389 0390 <span style="color:#fdbc4b;font-weight:bold;">entity</span> <span style="color:#f67400;font-weight:bold;">concat</span> <span style="font-weight:bold;">is</span> 0391 <span style="color:#fdbc4b;font-weight:bold;">end entity;</span> 0392 0393 <span style="color:#fdbc4b;font-weight:bold;">entity</span> <span style="color:#f67400;font-weight:bold;">foo</span> <span style="font-weight:bold;">is</span> 0394 <span style="color:#fdbc4b;font-weight:bold;">port</span> ( 0395 x <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">in</span> my_int ); 0396 <span style="color:#fdbc4b;font-weight:bold;">end entity;</span> 0397 0398 <span style="color:#fdbc4b;font-weight:bold;">architecture</span> <span style="color:#f67400;font-weight:bold;">t</span> <span style="font-weight:bold;">of</span> <span style="color:#8e44ad;">concat</span> <span style="font-weight:bold;">is</span> 0399 <span style="color:#27ae60;">type</span> int_array <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">array</span> (<span style="color:#2980b9;">integer</span> <span style="font-weight:bold;">range</span> <span style="color:#27ae60;"><></span>) <span style="font-weight:bold;">of</span> <span style="color:#2980b9;">integer</span>; 0400 <span style="color:#27ae60;">type</span> small <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">range</span> <span style="color:#f67400;">1</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">3</span>; 0401 0402 <span style="color:#fdbc4b;font-weight:bold;">component</span> <span style="color:#f67400;font-weight:bold;">or_entity</span> <span style="font-weight:bold;">is</span> 0403 <span style="color:#fdbc4b;font-weight:bold;">port</span>( 0404 input_1<span style="color:#27ae60;">:</span> <span style="font-weight:bold;">in</span> <span style="color:#2980b9;">std_logic</span>; 0405 output<span style="color:#27ae60;">:</span> <span style="font-weight:bold;">out</span> <span style="color:#2980b9;">std_logic</span> 0406 ); 0407 <span style="color:#fdbc4b;font-weight:bold;">end component;</span> 0408 <span style="color:#fdbc4b;font-weight:bold;">begin</span> 0409 <span style="color:#3daee9;font-weight:bold;">process</span> 0410 <span style="color:#27ae60;">variable</span> s <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">string</span>(<span style="color:#f67400;">1</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">5</span>); 0411 <span style="color:#27ae60;">variable</span> t <span style="color:#27ae60;">:</span> int_array(<span style="color:#f67400;">1</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">2</span>); 0412 <span style="color:#27ae60;">variable</span> c <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">bit_vector</span>(<span style="color:#f67400;">1</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">4</span>); 0413 <span style="color:#3daee9;font-weight:bold;">begin</span> 0414 x <span style="color:#27ae60;">:=</span> ( <span style="color:#f67400;">1</span><span style="color:#27ae60;">,</span> <span style="color:#f67400;">2</span><span style="color:#27ae60;">,</span> <span style="color:#f67400;">3</span> ); 0415 z <span style="color:#27ae60;">:=</span> x <span style="color:#27ae60;">&</span> y; 0416 w <span style="color:#27ae60;">:=</span> <span style="color:#f67400;">1</span> <span style="color:#27ae60;">&</span> x; 0417 s <span style="color:#27ae60;">:=</span> <span style="color:#f67400;">'h'</span> <span style="color:#27ae60;">&</span> string<span style="color:#f67400;">'("ello")</span>; 0418 <span style="font-weight:bold;">assert</span> <span style="color:#f44f4f;">"10"</span> <span style="color:#27ae60;">=</span> (b(<span style="color:#f67400;">1</span>) <span style="color:#27ae60;">&</span> <span style="color:#f44f4f;">"0"</span>); 0419 <span style="font-weight:bold;">wait</span>; 0420 <span style="color:#3daee9;font-weight:bold;">end process;</span> 0421 0422 <span style="color:#2980b9;font-weight:bold;">function</span> <span style="color:#f67400;font-weight:bold;">CounterVal</span>(Seconds <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">integer</span> <span style="color:#27ae60;">:=</span> <span style="color:#f67400;">0</span>) <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#2980b9;">integer</span> <span style="font-weight:bold;">is</span> 0423 <span style="color:#27ae60;">variable</span> TotalSeconds <span style="color:#27ae60;">:</span> interger; 0424 <span style="color:#2980b9;font-weight:bold;">begin</span> 0425 TotalSeconds <span style="color:#27ae60;">:=</span> Seconds <span style="color:#27ae60;">+</span> Minutes <span style="color:#27ae60;">*</span> <span style="color:#f67400;">60</span>; 0426 <span style="color:#fdbc4b;font-weight:bold;">return</span> TotalSeconds <span style="color:#27ae60;">*</span> ClockFrequencyHz <span style="color:#27ae60;">-</span><span style="color:#f67400;">1</span>; 0427 <span style="color:#2980b9;font-weight:bold;">end function;</span> 0428 0429 <span style="color:#27ae60;">type</span> enum_type <span style="color:#27ae60;">is</span> (a<span style="color:#27ae60;">,</span> b<span style="color:#27ae60;">,</span> c<span style="color:#27ae60;">,</span> <span style="color:#27ae60;">...,</span> z); 0430 <span style="color:#27ae60;">type</span> int_array <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">array</span>(<span style="color:#f67400;">3</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">0</span>) <span style="font-weight:bold;">of</span> <span style="color:#2980b9;">integer</span>; 0431 0432 <span style="font-weight:bold;">subtype</span> addr_int <span style="font-weight:bold;">is</span> <span style="color:#2980b9;">integer</span> <span style="font-weight:bold;">range</span> <span style="color:#f67400;">0</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">65535</span>; 0433 <span style="font-weight:bold;">subtype</span> sub_enum_type <span style="font-weight:bold;">is</span> enum_type <span style="font-weight:bold;">range</span> a <span style="color:#27ae60;">to</span> m; 0434 0435 <span style="color:#f67400;font-weight:bold;">inst1</span><span style="color:#27ae60;">:</span> <span style="font-weight:bold;">entity</span> <span style="color:#8e44ad;">work.counter1</span>(rtl) 0436 <span style="font-weight:bold;">generic map </span>(BITS1 <span style="color:#27ae60;">=></span> <span style="color:#f67400;">8</span>) 0437 <span style="font-weight:bold;">port map </span>( 0438 clk1 <span style="color:#27ae60;">=></span> Clock<span style="color:#27ae60;">,</span> 0439 DATA_OUT <span style="color:#27ae60;">=></span> pwm_data_o(<span style="color:#f67400;">3</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">5</span>)<span style="color:#27ae60;">,</span> 0440 COMP_IN(<span style="color:#f67400;">1</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">0</span>) <span style="color:#27ae60;">=></span> compensate_i<span style="color:#27ae60;">,</span> 0441 WRITE_IN <span style="color:#27ae60;">=></span> (<span style="color:#27ae60;">others</span> <span style="color:#27ae60;">=></span> <span style="color:#f67400;">'0'</span>) 0442 ); 0443 0444 <span style="color:#f67400;font-weight:bold;">inst2</span><span style="color:#27ae60;">:</span> <span style="font-weight:bold;">component</span> <span style="color:#8e44ad;">counter2</span> 0445 <span style="font-weight:bold;">generic map </span>(BITS1 <span style="color:#27ae60;">=></span> <span style="color:#f67400;">8</span>) 0446 <span style="font-weight:bold;">port map </span>(clk1 <span style="color:#27ae60;">=></span> Clock); 0447 0448 <span style="color:#f67400;font-weight:bold;">inst3</span><span style="color:#27ae60;">:</span> <span style="font-weight:bold;">configuration</span> <span style="color:#8e44ad;">counter3</span> 0449 <span style="font-weight:bold;">generic map </span>(BITS1 <span style="color:#27ae60;">=></span> <span style="color:#f67400;">8</span>) 0450 <span style="font-weight:bold;">port map </span>(clk1 <span style="color:#27ae60;">=></span> Clock); 0451 0452 <span style="color:#f67400;font-weight:bold;">THE_PWM_GEN</span> <span style="color:#27ae60;">:</span> <span style="color:#8e44ad;">pwm_generator</span> 0453 <span style="font-weight:bold;">generic map</span>( 0454 dsfds <span style="color:#27ae60;">=></span> ds 0455 ) 0456 <span style="font-weight:bold;">port map</span>( 0457 CLK <span style="color:#27ae60;">=></span> clk_i<span style="color:#27ae60;">,</span> 0458 DATA_IN <span style="color:#27ae60;">=></span> pwm_data_i<span style="color:#27ae60;">,</span> 0459 DATA_OUT <span style="color:#27ae60;">=></span> pwm_data_o(<span style="color:#f67400;">3</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">5</span>)<span style="color:#27ae60;">,</span> 0460 COMP_IN(<span style="color:#f67400;">1</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">0</span>) <span style="color:#27ae60;">=></span> compensate_i<span style="color:#27ae60;">,</span> 0461 WRITE_IN <span style="color:#27ae60;">=></span> (<span style="color:#27ae60;">others</span> <span style="color:#27ae60;">=></span> <span style="color:#f67400;">'0'</span>) 0462 ); 0463 0464 <span style="color:#fdbc4b;font-weight:bold;">end architecture;</span> 0465 0466 <span style="color:#fdbc4b;font-weight:bold;">architecture</span> <span style="color:#f67400;font-weight:bold;">a2</span> <span style="font-weight:bold;">of</span> <span style="color:#8e44ad;">e</span> <span style="font-weight:bold;">is</span> 0467 <span style="color:#2980b9;font-weight:bold;">function</span> <span style="color:#f44f4f;">">"</span>(a<span style="color:#27ae60;">,</span> b<span style="color:#27ae60;">:</span> my_int) <span style="color:#fdbc4b;font-weight:bold;">return</span> <span style="color:#2980b9;">boolean</span>; 0468 <span style="color:#fdbc4b;font-weight:bold;">begin</span> 0469 <span style="color:#3daee9;font-weight:bold;">process</span> <span style="font-weight:bold;">is</span> 0470 <span style="color:#27ae60;">variable</span> x<span style="color:#27ae60;">,</span> y <span style="color:#27ae60;">:</span> my_int; 0471 <span style="color:#3daee9;font-weight:bold;">begin</span> 0472 <span style="font-weight:bold;">assert</span> x <span style="color:#27ae60;">></span> y; 0473 <span style="font-weight:bold;">assert</span> x <span style="color:#27ae60;"><</span> y; <span style="color:#7a7c7d;">-- Error</span> 0474 <span style="color:#3daee9;font-weight:bold;">end process;</span> 0475 0476 <span style="color:#f67400;font-weight:bold;">billowitch_tc586</span><span style="color:#27ae60;">:</span> <span style="color:#fdbc4b;font-weight:bold;">block</span> <span style="font-weight:bold;">is</span> 0477 <span style="color:#27ae60;">type</span> real_cons_vector <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">array</span> (<span style="color:#f67400;">15</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">0</span>) <span style="font-weight:bold;">of</span> <span style="color:#2980b9;">real</span>; 0478 <span style="color:#27ae60;">type</span> real_cons_vector_file <span style="color:#27ae60;">is</span> <span style="font-weight:bold;">file</span> <span style="font-weight:bold;">of</span> real_cons_vector; 0479 <span style="color:#27ae60;">constant</span> C19 <span style="color:#27ae60;">:</span> real_cons_vector <span style="color:#27ae60;">:=</span> (<span style="color:#27ae60;">others</span> <span style="color:#27ae60;">=></span> <span style="color:#f67400;">3</span><span style="color:#27ae60;">.</span><span style="color:#f67400;">0</span>); 0480 <span style="font-weight:bold;">begin</span> 0481 <span style="color:#fdbc4b;font-weight:bold;">end block;</span> 0482 <span style="color:#fdbc4b;font-weight:bold;">end architecture;</span> 0483 0484 <span style="color:#fdbc4b;font-weight:bold;">architecture</span> <span style="color:#f67400;font-weight:bold;">arch</span> <span style="font-weight:bold;">of</span> <span style="color:#8e44ad;">ent</span> <span style="font-weight:bold;">is</span> 0485 <span style="color:#fdbc4b;font-weight:bold;">begin</span> 0486 <span style="color:#f67400;font-weight:bold;">LL</span><span style="color:#27ae60;">:</span> <span style="color:#fdbc4b;font-weight:bold;">if</span> test<span style="color:#27ae60;">=</span><span style="color:#f67400;">10</span> <span style="color:#fdbc4b;font-weight:bold;">generate</span> 0487 <span style="color:#fdbc4b;font-weight:bold;">begin</span> 0488 <span style="color:#fdbc4b;font-weight:bold;">end;</span> 0489 <span style="color:#fdbc4b;font-weight:bold;">elsif</span> test<span style="color:#27ae60;">=</span><span style="color:#f67400;">5</span> <span style="color:#fdbc4b;font-weight:bold;">generate</span> 0490 <span style="color:#fdbc4b;font-weight:bold;">begin</span> 0491 <span style="color:#fdbc4b;font-weight:bold;">end;</span> 0492 <span style="color:#fdbc4b;font-weight:bold;">end generate;</span> 0493 0494 <span style="color:#f67400;font-weight:bold;">LL</span><span style="color:#27ae60;">:</span> <span style="color:#fdbc4b;font-weight:bold;">if</span> <span style="color:#f67400;font-weight:bold;">l1</span><span style="color:#27ae60;">:</span> SPEED <span style="color:#27ae60;">=</span> <span style="color:#f44f4f;">"fast"</span> <span style="color:#fdbc4b;font-weight:bold;">generate</span> 0495 <span style="color:#fdbc4b;font-weight:bold;">elsif</span> test<span style="color:#27ae60;">=</span><span style="color:#f67400;">5</span> <span style="color:#fdbc4b;font-weight:bold;">generate</span> 0496 <span style="color:#fdbc4b;font-weight:bold;">end generate;</span> 0497 <span style="color:#fdbc4b;font-weight:bold;">end architecture arch;</span> 0498 0499 0500 <span style="color:#fdbc4b;font-weight:bold;">architecture</span> <span style="color:#f67400;font-weight:bold;">thing_arch</span> <span style="font-weight:bold;">of</span> <span style="color:#8e44ad;">designthing</span> <span style="font-weight:bold;">is</span> 0501 0502 <span style="color:#fdbc4b;font-weight:bold;">component</span> <span style="color:#f67400;font-weight:bold;">pwm_generator</span> 0503 <span style="color:#fdbc4b;font-weight:bold;">port</span>( 0504 CLK <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">in</span> <span style="color:#2980b9;">std_logic</span>; 0505 DATA_IN <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">in</span> <span style="color:#2980b9;">std_logic_vector</span>(<span style="color:#f67400;">15</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">0</span>); 0506 ); 0507 <span style="color:#fdbc4b;font-weight:bold;">end component pwm_generator;</span> 0508 0509 <span style="color:#27ae60;">attribute</span> NOM_FREQ <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">string</span>; 0510 <span style="color:#27ae60;">attribute</span> NOM_FREQ <span style="font-weight:bold;">of</span> clk_source <span style="color:#27ae60;">:</span> <span style="font-weight:bold;">label</span> <span style="font-weight:bold;">is</span> <span style="color:#f44f4f;">"133.00"</span>; 0511 <span style="color:#27ae60;">signal</span> clk_i <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">std_logic</span>; 0512 0513 <span style="color:#fdbc4b;font-weight:bold;">begin</span> 0514 0515 <span style="color:#f67400;font-weight:bold;">gen_no_comp</span><span style="color:#27ae60;">:</span> <span style="color:#fdbc4b;font-weight:bold;">if</span> TEMP <span style="color:#27ae60;">=</span> <span style="color:#f67400;">0</span> <span style="color:#fdbc4b;font-weight:bold;">generate</span> 0516 compensate_i <span style="color:#27ae60;"><=</span> (<span style="color:#27ae60;">others</span> <span style="color:#27ae60;">=></span> <span style="color:#f67400;">'0'</span>); 0517 <span style="color:#fdbc4b;font-weight:bold;">end generate;</span> 0518 0519 <span style="color:#f67400;font-weight:bold;">gen_no_comp</span><span style="color:#27ae60;">:</span> <span style="color:#fdbc4b;font-weight:bold;">for</span> i <span style="font-weight:bold;">in</span> <span style="color:#f67400;">0</span> <span style="color:#27ae60;">to</span> TEMP <span style="color:#fdbc4b;font-weight:bold;">generate</span> 0520 compensate_i <span style="color:#27ae60;"><=</span> (<span style="color:#27ae60;">others</span> <span style="color:#27ae60;">=></span> <span style="color:#f67400;">'0'</span>) <span style="font-weight:bold;">after</span> <span style="color:#f67400;">10</span> <span style="color:#2980b9;">ns</span>; 0521 compensate_i <span style="color:#27ae60;"><=</span> (<span style="color:#27ae60;">others</span> <span style="color:#27ae60;">=></span> <span style="color:#f67400;">'0'</span>) ; 0522 <span style="color:#fdbc4b;font-weight:bold;">end generate;</span> 0523 0524 <span style="color:#7a7c7d;">---------------------------------------------------------------------------</span> 0525 <span style="color:#7a7c7d;">-- LED blinking when activity on inputs</span> 0526 <span style="color:#7a7c7d;">---------------------------------------------------------------------------</span> 0527 <span style="color:#f67400;font-weight:bold;">PROC_TIMER</span> <span style="color:#27ae60;">:</span> <span style="color:#3daee9;font-weight:bold;">process</span> <span style="color:#3daee9;font-weight:bold;">begin</span> 0528 <span style="font-weight:bold;">wait</span> <span style="font-weight:bold;">until</span> <span style="font-weight:bold;">rising_edge</span>(clk_i); 0529 timer <span style="color:#27ae60;"><=</span> timer <span style="color:#27ae60;">+</span> <span style="color:#f67400;">1</span>; 0530 <span style="font-weight:bold;">wait</span> <span style="font-weight:bold;">for</span> <span style="color:#f67400;">10</span> <span style="color:#2980b9;">ns</span>; 0531 leds <span style="color:#27ae60;"><=</span> (last_inp <span style="font-weight:bold;">xor</span> inp_status(<span style="color:#f67400;">3</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">0</span>)) <span style="font-weight:bold;">or</span> leds <span style="font-weight:bold;">or</span> last_leds; 0532 <span style="color:#fdbc4b;font-weight:bold;">if</span> timer <span style="color:#27ae60;">=</span> <span style="color:#f67400;">0</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0533 leds <span style="color:#27ae60;"><=</span> <span style="font-weight:bold;">not</span> inp_status(<span style="color:#f67400;">3</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">0</span>); 0534 last_leds <span style="color:#27ae60;"><=</span> x<span style="color:#f44f4f;">"0"</span>; 0535 <span style="color:#fdbc4b;font-weight:bold;">elsif</span> gf <span style="color:#fdbc4b;font-weight:bold;">then</span> 0536 fdsa <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">'1'</span>; 0537 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0538 0539 <span style="color:#f67400;font-weight:bold;">xz</span><span style="color:#27ae60;">:</span> <span style="color:#fdbc4b;font-weight:bold;">for</span> x <span style="font-weight:bold;">in</span> <span style="color:#f67400;">0</span> <span style="color:#27ae60;">to</span> <span style="color:#f67400;">7</span> <span style="color:#fdbc4b;font-weight:bold;">loop</span> 0540 dsadf; 0541 <span style="color:#fdbc4b;font-weight:bold;">end loop;</span> 0542 0543 <span style="color:#fdbc4b;font-weight:bold;">case</span> c <span style="font-weight:bold;">is</span> 0544 <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#f67400;font-weight:bold;">XXX</span> <span style="color:#27ae60;">=></span> 0545 c <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">1</span>; 0546 d <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">21321</span>; 0547 <span style="color:#fdbc4b;font-weight:bold;">when</span> <span style="color:#f67400;font-weight:bold;">YYYY</span> <span style="color:#27ae60;">=></span> 0548 c <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">2</span>; 0549 <span style="color:#fdbc4b;font-weight:bold;">end case;</span> 0550 <span style="color:#3daee9;font-weight:bold;">end process;</span> 0551 0552 0553 <span style="color:#f67400;font-weight:bold;">generate_with_begin</span><span style="color:#27ae60;">:</span> <span style="color:#fdbc4b;font-weight:bold;">if</span> TEMP <span style="color:#27ae60;">=</span> <span style="color:#f67400;">0</span> <span style="color:#fdbc4b;font-weight:bold;">generate</span> 0554 <span style="color:#27ae60;">signal</span> <span style="color:#27ae60;">:</span> test <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">std_logic</span>; 0555 <span style="color:#fdbc4b;font-weight:bold;">begin</span> 0556 compensate_i <span style="color:#27ae60;"><=</span> (<span style="color:#27ae60;">others</span> <span style="color:#27ae60;">=></span> <span style="color:#f67400;">'0'</span>); 0557 <span style="color:#fdbc4b;font-weight:bold;">if</span> timer <span style="color:#27ae60;">=</span> <span style="color:#f67400;">0</span> <span style="color:#fdbc4b;font-weight:bold;">then</span> 0558 leds <span style="color:#27ae60;"><=</span> <span style="font-weight:bold;">not</span> inp_status(<span style="color:#f67400;">3</span> <span style="color:#27ae60;">downto</span> <span style="color:#f67400;">0</span>); 0559 last_leds <span style="color:#27ae60;"><=</span> x<span style="color:#f44f4f;">"0"</span>; 0560 <span style="color:#fdbc4b;font-weight:bold;">elsif</span> gf <span style="color:#fdbc4b;font-weight:bold;">then</span> 0561 fdsa <span style="color:#27ae60;"><=</span> <span style="color:#f67400;">'1'</span>; 0562 <span style="color:#fdbc4b;font-weight:bold;">end if;</span> 0563 <span style="color:#fdbc4b;font-weight:bold;">end generate generate_with_begin;</span> 0564 0565 <span style="color:#f67400;font-weight:bold;">PROC_TIMER</span> <span style="color:#27ae60;">:</span> <span style="color:#3daee9;font-weight:bold;">process</span> 0566 <span style="color:#27ae60;">variable</span> x <span style="color:#27ae60;">:</span> <span style="color:#2980b9;">std_logic</span>; 0567 <span style="color:#3daee9;font-weight:bold;">begin</span> 0568 x <span style="color:#27ae60;">:=</span> <span style="color:#f67400;">'0'</span>; 0569 <span style="color:#3daee9;font-weight:bold;">end process PROC_TIMER;</span> 0570 0571 <span style="color:#da4453;font-weight:bold;text-decoration:underline;">end architecture thing_arc;</span> <span style="color:#7a7c7d;">--this is not correct (wrong name)</span> 0572 0573 <span style="color:#f67400;">1</span><span style="color:#27ae60;">+</span><span style="color:#f67400;">1</span> 0574 <span style="color:#f67400;">2</span><span style="color:#2980b9;">ns</span> 0575 0576 <span style="color:#f67400;">1_2_3</span> 0577 <span style="color:#f67400;">12_3</span> 0578 <span style="color:#f67400;">1</span><span style="color:#27ae60;">.</span><span style="color:#f67400;">2</span> 0579 <span style="color:#f67400;">1</span><span style="color:#27ae60;">.</span><span style="color:#f67400;">2_3</span> 0580 <span style="color:#f67400;">1_3</span><span style="color:#27ae60;">.</span><span style="color:#f67400;">2_3</span> 0581 <span style="color:#f67400;">12_3</span><span style="color:#f67400;">e+1</span> 0582 <span style="color:#f67400;">12_3</span><span style="color:#f67400;">e-1</span> 0583 <span style="color:#f67400;">12_3</span><span style="color:#f67400;">e1_1</span> 0584 <span style="color:#f67400;">12_3</span><span style="color:#27ae60;">.</span><span style="color:#f67400;">4</span><span style="color:#f67400;">e1_1</span> 0585 <span style="color:#f67400;">12_3</span><span style="color:#f67400;">e1</span>_ 0586 <span style="color:#f67400;">12_3</span><span style="color:#da4453;font-weight:bold;text-decoration:underline;">e</span> 0587 0588 <span style="color:#f67400;">2</span><span style="color:#27ae60;">#</span><span style="color:#f67400;">1_2_3</span><span style="color:#27ae60;">#</span><span style="color:#f67400;">E+8</span> 0589 <span style="color:#f67400;">2</span><span style="color:#27ae60;">#</span><span style="color:#f67400;">1_2</span><span style="color:#27ae60;">.</span><span style="color:#f67400;">3</span><span style="color:#27ae60;">#</span><span style="color:#f67400;">E+8</span> 0590 <span style="color:#f67400;">2</span><span style="color:#27ae60;">#</span><span style="color:#f67400;">1_f2</span><span style="color:#27ae60;">.</span><span style="color:#f67400;">3</span><span style="color:#27ae60;">#</span> 0591 0592 <span style="color:#f67400;">3</span><span style="color:#27ae60;">.</span><span style="color:#f67400;">14159_26536</span> <span style="color:#7a7c7d;">-- A literal of type universal_real.</span> 0593 <span style="color:#f67400;">5280</span> <span style="color:#7a7c7d;">-- A literal of type universal_integer.</span> 0594 <span style="color:#f67400;">10</span><span style="color:#27ae60;">.</span><span style="color:#f67400;">7</span> <span style="color:#2980b9;">ns</span> <span style="color:#7a7c7d;">-- A literal of a physical type.</span> 0595 O<span style="color:#f44f4f;">"4777"</span> <span style="color:#7a7c7d;">-- A bit string literal.</span> 0596 <span style="color:#f44f4f;">"54LS281"</span> <span style="color:#7a7c7d;">-- A string literal.</span> 0597 <span style="color:#f44f4f;">""</span> <span style="color:#7a7c7d;">-- A string literal representing a null array.</span> 0598 B<span style="color:#f44f4f;">"1111_1111_1111"</span> <span style="color:#7a7c7d;">-- Equivalent to the string literal "111111111111".</span> 0599 X<span style="color:#f44f4f;">"FFF"</span> <span style="color:#7a7c7d;">-- Equivalent to B"1111_1111_1111".</span> 0600 O<span style="color:#f44f4f;">"777"</span> <span style="color:#7a7c7d;">-- Equivalent to B"111_111_111".</span> 0601 X<span style="color:#f44f4f;">"777"</span> <span style="color:#7a7c7d;">-- Equivalent to B"0111_0111_0111".</span> 0602 B<span style="color:#f44f4f;">"XXXX_01LH"</span> <span style="color:#7a7c7d;">-- Equivalent to the string literal "XXXX01LH"</span> 0603 UO<span style="color:#f44f4f;">"27"</span> <span style="color:#7a7c7d;">-- Equivalent to B"010_111"</span> 0604 UO<span style="color:#f44f4f;">"2C"</span> <span style="color:#7a7c7d;">-- Equivalent to B"011_CCC"</span> 0605 SX<span style="color:#f44f4f;">"3W"</span> <span style="color:#7a7c7d;">-- Equivalent to B"0011_WWWW"</span> 0606 D<span style="color:#f44f4f;">"35"</span> <span style="color:#7a7c7d;">-- Equivalent to B"100011"</span> 0607 <span style="color:#f67400;">12</span>UB<span style="color:#f44f4f;">"X1"</span> <span style="color:#7a7c7d;">-- Equivalent to B"0000_0000_00X1"</span> 0608 <span style="color:#f67400;">12</span>SB<span style="color:#f44f4f;">"X1"</span> <span style="color:#7a7c7d;">-- Equivalent to B"XXXX_XXXX_XXX1"</span> 0609 <span style="color:#f67400;">12</span>UX<span style="color:#f44f4f;">"F-"</span> <span style="color:#7a7c7d;">-- Equivalent to B"0000_1111_----"</span> 0610 <span style="color:#f67400;">12</span>SX<span style="color:#f44f4f;">"F-"</span> <span style="color:#7a7c7d;">-- Equivalent to B"1111_1111_----"</span> 0611 <span style="color:#f67400;">12</span>D<span style="color:#f44f4f;">"13"</span> <span style="color:#7a7c7d;">-- Equivalent to B"0000_0000_1101"</span> 0612 <span style="color:#f67400;">12</span>UX<span style="color:#f44f4f;">"000WWW"</span> <span style="color:#7a7c7d;">-- Equivalent to B"WWWW_WWWW_WWWW"</span> 0613 <span style="color:#f67400;">12</span>SX<span style="color:#f44f4f;">"FFFC00"</span> <span style="color:#7a7c7d;">-- Equivalent to B"1100_0000_0000"</span> 0614 <span style="color:#f67400;">12</span>SX<span style="color:#f44f4f;">"XXXX00"</span> <span style="color:#7a7c7d;">-- Equivalent to B"XXXX_0000_0000"</span> 0615 <span style="color:#f67400;">8</span>D<span style="color:#f44f4f;">"511"</span> <span style="color:#7a7c7d;">-- Error</span> 0616 <span style="color:#f67400;">8</span>UO<span style="color:#f44f4f;">"477"</span> <span style="color:#7a7c7d;">-- Error</span> 0617 <span style="color:#f67400;">8</span>SX<span style="color:#f44f4f;">"0FF"</span> <span style="color:#7a7c7d;">-- Error</span> 0618 <span style="color:#f67400;">8</span>SX<span style="color:#f44f4f;">"FXX"</span> <span style="color:#7a7c7d;">-- Error</span> 0619 </pre></body></html>