Last active
August 31, 2015 14:09
-
-
Save josyb/3d8eb3a2fe56e2e4e478 to your computer and use it in GitHub Desktop.
MyHDL Structured Types in action.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- File: aos.vhd | |
-- Generated by MyHDL 1.0dev | |
-- Date: Mon Aug 31 15:57:52 2015 | |
library IEEE; | |
use IEEE.std_logic_1164.all; | |
use IEEE.numeric_std.all; | |
use std.textio.all; | |
use work.pck_myhdl_10.all; | |
entity aos is | |
port( | |
Clk : in std_logic; | |
Reset : in std_logic; | |
A0 : in unsigned(1 downto 0); | |
A1 : in unsigned(1 downto 0); | |
CI : in unsigned(1 downto 0); | |
D : in unsigned(7 downto 0); | |
Wr : in std_logic; | |
WrCI : in std_logic; | |
Q : out unsigned(23 downto 0) | |
); | |
end entity aos; | |
-- a small example to test the StructType experimental implementation | |
architecture MyHDL of aos is | |
type a3_rgbpix is array (0 to 3 - 1) of rgbpix; | |
type a3_a3_rgbpix is array (0 to 3 - 1) of a3_rgbpix; | |
type rgbpix is record | |
r : unsigned(7 downto 0); | |
b : unsigned(7 downto 0); | |
g : unsigned(7 downto 0); | |
end record; | |
signal lg : unsigned(7 downto 0); | |
signal lb : unsigned(7 downto 0); | |
signal plane : a3_a3_rgbpix; | |
signal pixel : rgbpix; | |
begin | |
aos_aoifill : process(Clk, Reset) is | |
begin | |
if (Reset = '1') then | |
Q <= to_unsigned(0, 24); | |
lg <= to_unsigned(0, 8); | |
lb <= to_unsigned(0, 8); | |
elsif rising_edge(Clk) then | |
if ((0 = CI) and bool(WrCI)) then | |
lb <= D; | |
end if; | |
if ((1 = CI) and bool(WrCI)) then | |
lg <= D; | |
end if; | |
if ((2 = CI) and bool(WrCI)) then | |
pixel.b <= lb; | |
pixel.g <= lg; | |
pixel.r(4 - 1 downto 0) := D(8 - 1 downto 4); | |
pixel.r(8 - 1 downto 4) := D(4 - 1 downto 0); | |
end if; | |
for k in 0 to 3 - 1 loop | |
for j in 0 to 3 - 1 loop | |
if ((k = signed(resize(A1, 3))) and (j = signed(resize(A0, 3))) and bool(Wr)) then | |
plane(k)(j) <= pixel; | |
end if; | |
end loop; | |
end loop; | |
Q(8 - 1 downto 0) <= plane(to_integer(A1))(to_integer(A0)).b; | |
Q(16 - 1 downto 8) <= plane(to_integer(A1))(to_integer(A0)).g; | |
Q(24 - 1 downto 16) <= plane(to_integer(A1))(to_integer(A0)).r; | |
end if; | |
end process aos_aoifill; | |
end architecture MyHDL; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
Created on 28 August 2015 | |
@author: Josy | |
''' | |
from __future__ import print_function | |
import random | |
import myhdl | |
import hdlutils | |
class rgbpix( myhdl.StructType ): | |
''' an struct/record with conversion routines ''' | |
def __init__( self, WIDTH_PIXEL = 10, values = None ): | |
self._WIDTH_PIXEL = WIDTH_PIXEL | |
if values is None: | |
self.b = myhdl.Signal( myhdl.intbv( 0 )[self._WIDTH_PIXEL:] ) | |
self.g = myhdl.Signal( myhdl.intbv( 0 )[self._WIDTH_PIXEL:] ) | |
self.r = myhdl.Signal( myhdl.intbv( 0 )[self._WIDTH_PIXEL:] ) | |
else: | |
self.b = myhdl.Signal( myhdl.intbv( values[0] )[self._WIDTH_PIXEL:] ) | |
self.g = myhdl.Signal( myhdl.intbv( values[1] )[self._WIDTH_PIXEL:] ) | |
self.r = myhdl.Signal( myhdl.intbv( values[2] )[self._WIDTH_PIXEL:] ) | |
def torecord( self, v ): | |
''' we 'reformat' a vector into an interface/record ''' | |
trWIDTH_PIXEL = self._WIDTH_PIXEL | |
@myhdl.always_comb | |
def torecord(): | |
lv = v | |
self.b.next = lv[( 0 + 1 ) * trWIDTH_PIXEL : 0 * trWIDTH_PIXEL] | |
self.g.next = lv[( 1 + 1 ) * trWIDTH_PIXEL : 1 * trWIDTH_PIXEL] | |
self.r.next = lv[( 2 + 1 ) * trWIDTH_PIXEL : 2 * trWIDTH_PIXEL] | |
return torecord | |
def tointbv( self, y ): | |
''' build a flattened vector from the record's elements in ascending order''' | |
tiWIDTH_PIXEL = self._WIDTH_PIXEL | |
@myhdl.always_comb | |
def tointbv(): | |
y.next[( 0 + 1 ) * tiWIDTH_PIXEL : 0 * tiWIDTH_PIXEL ] = self.b | |
y.next[( 1 + 1 ) * tiWIDTH_PIXEL : 1 * tiWIDTH_PIXEL ] = self.g | |
y.next[( 2 + 1 ) * tiWIDTH_PIXEL : 2 * tiWIDTH_PIXEL ] = self.r | |
return tointbv | |
def tonatural( self ): | |
return ( ( ( self.r << self._WIDTH_PIXEL ) + self.g ) << self._WIDTH_PIXEL ) + self.b | |
def flatten(self): | |
return myhdl.ConcatSignal( self.r, self.g, self.b) | |
def aos( Clk, Reset, A0, A1, CI, D , Wr , WrCI, Q ): | |
''' a small example to test the StructType experimental implementation ''' | |
lb,lg = [myhdl.Signal( myhdl.intbv(0)[8:]) for _ in range(2)] | |
pixel = rgbpix(8) | |
plane = myhdl.Array( ( 3, 3 ), rgbpix( 8 ) ) | |
# qpixel = rgbpix(8) | |
@myhdl.always_seq( Clk.posedge, reset = Reset ) | |
def aoifill(): | |
if 0 == CI and WrCI: | |
lb.next = D | |
if 1 == CI and WrCI: | |
lg.next = D | |
if 2 == CI and WrCI: | |
pixel.b.next = lb | |
pixel.g.next = lg | |
pixel.r.next[4:] = D[:4] # this works | |
pixel.r.next[:4] = D[4:] | |
for k in range( 3 ): | |
for j in range( 3 ): | |
if k == A1 and j == A0 and Wr: | |
plane[k][j].next = pixel # this works | |
# plane[k][j].b.next = pixel.b | |
# plane[k][j].g.next = pixel.g | |
# plane[k][j].r.next[4:] = pixel.r[:4] # this doesn't work | |
# plane[k][j].r.next[:4] = pixel.r[4:] # this doesn't work | |
# always reading | |
# Q.next = (plane[A1][A0].r << 16) + (plane[A1][A0].g << 8) + plane[A1][A0].b | |
# qpixel.next = plane[A1][A0] | |
Q.next[ 8: ] = plane[A1][A0].b | |
Q.next[16: 8] = plane[A1][A0].g | |
Q.next[24:16] = plane[A1][A0].r | |
return aoifill | |
def tb_aos(): | |
TB_WIDTH_D = 8 | |
Clk = myhdl.Signal( bool( 0 ) ) | |
Reset = myhdl.ResetSignal( 0, active = 1, async = True ) | |
A0, A1 , CI = [myhdl.Signal( myhdl.intbv( 0 , min = 0, max = 3 ) ) for _ in range( 3 )] | |
D = myhdl.Signal( myhdl.intbv( 0 )[TB_WIDTH_D:] ) | |
Wr = myhdl.Signal( bool( 0 ) ) | |
WrCI = myhdl.Signal( bool( 0 ) ) | |
Q = myhdl.Signal( myhdl.intbv( 0 )[TB_WIDTH_D * 3:] ) | |
dut = aos( Clk, Reset, A0, A1, CI, D, Wr, WrCI, Q ) | |
td = [[[ ( k * 3 + j ) * 3 + i + 1 for i in range( 3 )] for j in range( 3 )] for k in range( 3 ) ] | |
# tally | |
ClkCount = myhdl.Signal( myhdl.intbv( 0 )[32:] ) | |
tCK = 20 | |
@myhdl.instance | |
def clkgen(): | |
yield hdlutils.genClk( Clk, tCK, ClkCount ) | |
@myhdl.instance | |
def resetgen(): | |
yield hdlutils.genReset( Clk, tCK, Reset ) | |
@myhdl.instance | |
def stimulusin(): | |
yield hdlutils.delayclks( Clk, tCK, 5 ) | |
for k in range( 3 ): | |
A1.next = k | |
for j in range( 3 ): | |
A0.next = j | |
for i in range( 3 ): | |
CI.next = i | |
D.next = td[k][j][i] | |
yield hdlutils.pulsesig( Clk, tCK, WrCI, 1, 1 ) | |
yield hdlutils.delayclks( Clk, tCK, 1 ) | |
yield hdlutils.pulsesig( Clk, tCK, Wr, 1, 1 ) | |
yield hdlutils.delayclks( Clk, tCK, 1 ) | |
for k in range( 3 ): | |
A1.next = k | |
for j in range( 3 ): | |
A0.next = j | |
yield hdlutils.delayclks( Clk, tCK, 3 ) | |
yield hdlutils.delayclks( Clk, tCK, 5 ) | |
raise myhdl.StopSimulation | |
return dut, clkgen, resetgen, stimulusin | |
def convert(): | |
WIDTH_D = 8 | |
Clk = myhdl.Signal( bool( 0 ) ) | |
Reset = myhdl.ResetSignal( 0, active = 1, async = True ) | |
A0, A1 , CI = [myhdl.Signal( myhdl.intbv( 0 , min = 0, max = 3 ) ) for _ in range( 3 )] | |
D = myhdl.Signal( myhdl.intbv( 0 )[WIDTH_D:] ) | |
B = myhdl.Signal( bool( 0 ) ) | |
Wr = myhdl.Signal( bool( 0 ) ) | |
WrCI = myhdl.Signal( bool( 0 ) ) | |
Q = myhdl.Signal( myhdl.intbv( 0 )[WIDTH_D * 3:] ) | |
myhdl.toVHDL( aos, Clk, Reset, A0, A1, CI, D, Wr, WrCI, Q ) | |
if __name__ == '__main__': | |
hdlutils.simulate( 10000, tb_aos ) | |
convert() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$date | |
Mon Aug 31 15:57:52 2015 | |
$end | |
$version | |
MyHDL 1.0dev | |
$end | |
$timescale | |
1ns | |
$end | |
$scope module tb_aos $end | |
$var reg 1 ! Reset $end | |
$var reg 24 " Q $end | |
$var reg 2 # CI $end | |
$var reg 8 $ D $end | |
$var reg 1 % Clk $end | |
$var reg 2 & A1 $end | |
$var reg 2 ' A0 $end | |
$var reg 1 ( Wr $end | |
$var reg 32 ) ClkCount $end | |
$var reg 1 * WrCI $end | |
$scope module dut $end | |
$var reg 1 ! Reset $end | |
$var reg 8 + lg $end | |
$var reg 2 # CI $end | |
$var reg 2 & A1 $end | |
$var reg 8 , lb $end | |
$var reg 8 $ D $end | |
$var reg 1 % Clk $end | |
$var reg 24 " Q $end | |
$var reg 2 ' A0 $end | |
$var reg 1 ( Wr $end | |
$var reg 1 * WrCI $end | |
$scope module plane $end | |
$scope module plane(0)(0) $end | |
$var reg 8 - plane(0)(0).b $end | |
$var reg 8 . plane(0)(0).r $end | |
$var reg 8 / plane(0)(0).g $end | |
$upscope $end | |
$scope module plane(0)(1) $end | |
$var reg 8 0 plane(0)(1).b $end | |
$var reg 8 1 plane(0)(1).r $end | |
$var reg 8 2 plane(0)(1).g $end | |
$upscope $end | |
$scope module plane(0)(2) $end | |
$var reg 8 3 plane(0)(2).b $end | |
$var reg 8 4 plane(0)(2).r $end | |
$var reg 8 5 plane(0)(2).g $end | |
$upscope $end | |
$scope module plane(1)(0) $end | |
$var reg 8 6 plane(1)(0).b $end | |
$var reg 8 7 plane(1)(0).r $end | |
$var reg 8 8 plane(1)(0).g $end | |
$upscope $end | |
$scope module plane(1)(1) $end | |
$var reg 8 9 plane(1)(1).b $end | |
$var reg 8 : plane(1)(1).r $end | |
$var reg 8 ; plane(1)(1).g $end | |
$upscope $end | |
$scope module plane(1)(2) $end | |
$var reg 8 < plane(1)(2).b $end | |
$var reg 8 = plane(1)(2).r $end | |
$var reg 8 > plane(1)(2).g $end | |
$upscope $end | |
$scope module plane(2)(0) $end | |
$var reg 8 ? plane(2)(0).b $end | |
$var reg 8 @ plane(2)(0).r $end | |
$var reg 8 A plane(2)(0).g $end | |
$upscope $end | |
$scope module plane(2)(1) $end | |
$var reg 8 B plane(2)(1).b $end | |
$var reg 8 C plane(2)(1).r $end | |
$var reg 8 D plane(2)(1).g $end | |
$upscope $end | |
$scope module plane(2)(2) $end | |
$var reg 8 E plane(2)(2).b $end | |
$var reg 8 F plane(2)(2).r $end | |
$var reg 8 G plane(2)(2).g $end | |
$upscope $end | |
$upscope $end | |
$scope module pixel $end | |
$var reg 8 H pixel.r $end | |
$var reg 8 I pixel.b $end | |
$var reg 8 J pixel.g $end | |
$upscope $end | |
$upscope $end | |
$upscope $end | |
$enddefinitions $end | |
$dumpvars | |
0! | |
b000000000000000000000000 " | |
b00 # | |
b00000000 $ | |
0% | |
b00 & | |
b00 ' | |
0( | |
b00000000000000000000000000000000 ) | |
0* | |
b00000000 + | |
b00000000 , | |
b00000000 - | |
b00000000 . | |
b00000000 / | |
b00000000 0 | |
b00000000 1 | |
b00000000 2 | |
b00000000 3 | |
b00000000 4 | |
b00000000 5 | |
b00000000 6 | |
b00000000 7 | |
b00000000 8 | |
b00000000 9 | |
b00000000 : | |
b00000000 ; | |
b00000000 < | |
b00000000 = | |
b00000000 > | |
b00000000 ? | |
b00000000 @ | |
b00000000 A | |
b00000000 B | |
b00000000 C | |
b00000000 D | |
b00000000 E | |
b00000000 F | |
b00000000 G | |
b00000000 H | |
b00000000 I | |
b00000000 J | |
$end | |
1! | |
1% | |
#10 | |
0% | |
b00000000000000000000000000000001 ) | |
#20 | |
1% | |
#30 | |
0% | |
b00000000000000000000000000000010 ) | |
#40 | |
1% | |
#50 | |
0% | |
b00000000000000000000000000000011 ) | |
#60 | |
1% | |
#70 | |
0% | |
b00000000000000000000000000000100 ) | |
0! | |
#80 | |
1% | |
#85 | |
b00000001 $ | |
1* | |
#90 | |
0% | |
b00000000000000000000000000000101 ) | |
#100 | |
1% | |
b00000001 , | |
#105 | |
0* | |
#110 | |
0% | |
b00000000000000000000000000000110 ) | |
#120 | |
1% | |
#125 | |
b01 # | |
b00000010 $ | |
1* | |
#130 | |
0% | |
b00000000000000000000000000000111 ) | |
#140 | |
1% | |
b00000010 + | |
#145 | |
0* | |
#150 | |
0% | |
b00000000000000000000000000001000 ) | |
#160 | |
1% | |
#165 | |
b10 # | |
b00000011 $ | |
1* | |
#170 | |
0% | |
b00000000000000000000000000001001 ) | |
#180 | |
1% | |
b00000001 I | |
b00000010 J | |
b00110000 H | |
#185 | |
0* | |
#190 | |
0% | |
b00000000000000000000000000001010 ) | |
#200 | |
1% | |
#205 | |
1( | |
#210 | |
0% | |
b00000000000000000000000000001011 ) | |
#220 | |
1% | |
b00000001 - | |
b00110000 . | |
b00000010 / | |
#225 | |
0( | |
#230 | |
0% | |
b00000000000000000000000000001100 ) | |
#240 | |
1% | |
b001100000000001000000001 " | |
#245 | |
b01 ' | |
b00 # | |
b00000100 $ | |
1* | |
#250 | |
0% | |
b00000000000000000000000000001101 ) | |
#260 | |
1% | |
b00000100 , | |
b000000000000000000000000 " | |
#265 | |
0* | |
#270 | |
0% | |
b00000000000000000000000000001110 ) | |
#280 | |
1% | |
#285 | |
b01 # | |
b00000101 $ | |
1* | |
#290 | |
0% | |
b00000000000000000000000000001111 ) | |
#300 | |
1% | |
b00000101 + | |
#305 | |
0* | |
#310 | |
0% | |
b00000000000000000000000000010000 ) | |
#320 | |
1% | |
#325 | |
b10 # | |
b00000110 $ | |
1* | |
#330 | |
0% | |
b00000000000000000000000000010001 ) | |
#340 | |
1% | |
b00000100 I | |
b00000101 J | |
b01100000 H | |
#345 | |
0* | |
#350 | |
0% | |
b00000000000000000000000000010010 ) | |
#360 | |
1% | |
#365 | |
1( | |
#370 | |
0% | |
b00000000000000000000000000010011 ) | |
#380 | |
1% | |
b00000100 0 | |
b01100000 1 | |
b00000101 2 | |
#385 | |
0( | |
#390 | |
0% | |
b00000000000000000000000000010100 ) | |
#400 | |
1% | |
b011000000000010100000100 " | |
#405 | |
b10 ' | |
b00 # | |
b00000111 $ | |
1* | |
#410 | |
0% | |
b00000000000000000000000000010101 ) | |
#420 | |
1% | |
b00000111 , | |
b000000000000000000000000 " | |
#425 | |
0* | |
#430 | |
0% | |
b00000000000000000000000000010110 ) | |
#440 | |
1% | |
#445 | |
b01 # | |
b00001000 $ | |
1* | |
#450 | |
0% | |
b00000000000000000000000000010111 ) | |
#460 | |
1% | |
b00001000 + | |
#465 | |
0* | |
#470 | |
0% | |
b00000000000000000000000000011000 ) | |
#480 | |
1% | |
#485 | |
b10 # | |
b00001001 $ | |
1* | |
#490 | |
0% | |
b00000000000000000000000000011001 ) | |
#500 | |
1% | |
b00000111 I | |
b00001000 J | |
b10010000 H | |
#505 | |
0* | |
#510 | |
0% | |
b00000000000000000000000000011010 ) | |
#520 | |
1% | |
#525 | |
1( | |
#530 | |
0% | |
b00000000000000000000000000011011 ) | |
#540 | |
1% | |
b00000111 3 | |
b10010000 4 | |
b00001000 5 | |
#545 | |
0( | |
#550 | |
0% | |
b00000000000000000000000000011100 ) | |
#560 | |
1% | |
b100100000000100000000111 " | |
#565 | |
b01 & | |
b00 ' | |
b00 # | |
b00001010 $ | |
1* | |
#570 | |
0% | |
b00000000000000000000000000011101 ) | |
#580 | |
1% | |
b00001010 , | |
b000000000000000000000000 " | |
#585 | |
0* | |
#590 | |
0% | |
b00000000000000000000000000011110 ) | |
#600 | |
1% | |
#605 | |
b01 # | |
b00001011 $ | |
1* | |
#610 | |
0% | |
b00000000000000000000000000011111 ) | |
#620 | |
1% | |
b00001011 + | |
#625 | |
0* | |
#630 | |
0% | |
b00000000000000000000000000100000 ) | |
#640 | |
1% | |
#645 | |
b10 # | |
b00001100 $ | |
1* | |
#650 | |
0% | |
b00000000000000000000000000100001 ) | |
#660 | |
1% | |
b00001010 I | |
b00001011 J | |
b11000000 H | |
#665 | |
0* | |
#670 | |
0% | |
b00000000000000000000000000100010 ) | |
#680 | |
1% | |
#685 | |
1( | |
#690 | |
0% | |
b00000000000000000000000000100011 ) | |
#700 | |
1% | |
b00001010 6 | |
b11000000 7 | |
b00001011 8 | |
#705 | |
0( | |
#710 | |
0% | |
b00000000000000000000000000100100 ) | |
#720 | |
1% | |
b110000000000101100001010 " | |
#725 | |
b01 ' | |
b00 # | |
b00001101 $ | |
1* | |
#730 | |
0% | |
b00000000000000000000000000100101 ) | |
#740 | |
1% | |
b00001101 , | |
b000000000000000000000000 " | |
#745 | |
0* | |
#750 | |
0% | |
b00000000000000000000000000100110 ) | |
#760 | |
1% | |
#765 | |
b01 # | |
b00001110 $ | |
1* | |
#770 | |
0% | |
b00000000000000000000000000100111 ) | |
#780 | |
1% | |
b00001110 + | |
#785 | |
0* | |
#790 | |
0% | |
b00000000000000000000000000101000 ) | |
#800 | |
1% | |
#805 | |
b10 # | |
b00001111 $ | |
1* | |
#810 | |
0% | |
b00000000000000000000000000101001 ) | |
#820 | |
1% | |
b00001101 I | |
b00001110 J | |
b11110000 H | |
#825 | |
0* | |
#830 | |
0% | |
b00000000000000000000000000101010 ) | |
#840 | |
1% | |
#845 | |
1( | |
#850 | |
0% | |
b00000000000000000000000000101011 ) | |
#860 | |
1% | |
b00001101 9 | |
b11110000 : | |
b00001110 ; | |
#865 | |
0( | |
#870 | |
0% | |
b00000000000000000000000000101100 ) | |
#880 | |
1% | |
b111100000000111000001101 " | |
#885 | |
b10 ' | |
b00 # | |
b00010000 $ | |
1* | |
#890 | |
0% | |
b00000000000000000000000000101101 ) | |
#900 | |
1% | |
b00010000 , | |
b000000000000000000000000 " | |
#905 | |
0* | |
#910 | |
0% | |
b00000000000000000000000000101110 ) | |
#920 | |
1% | |
#925 | |
b01 # | |
b00010001 $ | |
1* | |
#930 | |
0% | |
b00000000000000000000000000101111 ) | |
#940 | |
1% | |
b00010001 + | |
#945 | |
0* | |
#950 | |
0% | |
b00000000000000000000000000110000 ) | |
#960 | |
1% | |
#965 | |
b10 # | |
b00010010 $ | |
1* | |
#970 | |
0% | |
b00000000000000000000000000110001 ) | |
#980 | |
1% | |
b00010000 I | |
b00010001 J | |
b00100001 H | |
#985 | |
0* | |
#990 | |
0% | |
b00000000000000000000000000110010 ) | |
#1000 | |
1% | |
#1005 | |
1( | |
#1010 | |
0% | |
b00000000000000000000000000110011 ) | |
#1020 | |
1% | |
b00010000 < | |
b00100001 = | |
b00010001 > | |
#1025 | |
0( | |
#1030 | |
0% | |
b00000000000000000000000000110100 ) | |
#1040 | |
1% | |
b001000010001000100010000 " | |
#1045 | |
b10 & | |
b00 ' | |
b00 # | |
b00010011 $ | |
1* | |
#1050 | |
0% | |
b00000000000000000000000000110101 ) | |
#1060 | |
1% | |
b00010011 , | |
b000000000000000000000000 " | |
#1065 | |
0* | |
#1070 | |
0% | |
b00000000000000000000000000110110 ) | |
#1080 | |
1% | |
#1085 | |
b01 # | |
b00010100 $ | |
1* | |
#1090 | |
0% | |
b00000000000000000000000000110111 ) | |
#1100 | |
1% | |
b00010100 + | |
#1105 | |
0* | |
#1110 | |
0% | |
b00000000000000000000000000111000 ) | |
#1120 | |
1% | |
#1125 | |
b10 # | |
b00010101 $ | |
1* | |
#1130 | |
0% | |
b00000000000000000000000000111001 ) | |
#1140 | |
1% | |
b00010011 I | |
b00010100 J | |
b01010001 H | |
#1145 | |
0* | |
#1150 | |
0% | |
b00000000000000000000000000111010 ) | |
#1160 | |
1% | |
#1165 | |
1( | |
#1170 | |
0% | |
b00000000000000000000000000111011 ) | |
#1180 | |
1% | |
b00010011 ? | |
b01010001 @ | |
b00010100 A | |
#1185 | |
0( | |
#1190 | |
0% | |
b00000000000000000000000000111100 ) | |
#1200 | |
1% | |
b010100010001010000010011 " | |
#1205 | |
b01 ' | |
b00 # | |
b00010110 $ | |
1* | |
#1210 | |
0% | |
b00000000000000000000000000111101 ) | |
#1220 | |
1% | |
b00010110 , | |
b000000000000000000000000 " | |
#1225 | |
0* | |
#1230 | |
0% | |
b00000000000000000000000000111110 ) | |
#1240 | |
1% | |
#1245 | |
b01 # | |
b00010111 $ | |
1* | |
#1250 | |
0% | |
b00000000000000000000000000111111 ) | |
#1260 | |
1% | |
b00010111 + | |
#1265 | |
0* | |
#1270 | |
0% | |
b00000000000000000000000001000000 ) | |
#1280 | |
1% | |
#1285 | |
b10 # | |
b00011000 $ | |
1* | |
#1290 | |
0% | |
b00000000000000000000000001000001 ) | |
#1300 | |
1% | |
b00010110 I | |
b00010111 J | |
b10000001 H | |
#1305 | |
0* | |
#1310 | |
0% | |
b00000000000000000000000001000010 ) | |
#1320 | |
1% | |
#1325 | |
1( | |
#1330 | |
0% | |
b00000000000000000000000001000011 ) | |
#1340 | |
1% | |
b00010110 B | |
b10000001 C | |
b00010111 D | |
#1345 | |
0( | |
#1350 | |
0% | |
b00000000000000000000000001000100 ) | |
#1360 | |
1% | |
b100000010001011100010110 " | |
#1365 | |
b10 ' | |
b00 # | |
b00011001 $ | |
1* | |
#1370 | |
0% | |
b00000000000000000000000001000101 ) | |
#1380 | |
1% | |
b00011001 , | |
b000000000000000000000000 " | |
#1385 | |
0* | |
#1390 | |
0% | |
b00000000000000000000000001000110 ) | |
#1400 | |
1% | |
#1405 | |
b01 # | |
b00011010 $ | |
1* | |
#1410 | |
0% | |
b00000000000000000000000001000111 ) | |
#1420 | |
1% | |
b00011010 + | |
#1425 | |
0* | |
#1430 | |
0% | |
b00000000000000000000000001001000 ) | |
#1440 | |
1% | |
#1445 | |
b10 # | |
b00011011 $ | |
1* | |
#1450 | |
0% | |
b00000000000000000000000001001001 ) | |
#1460 | |
1% | |
b00011001 I | |
b00011010 J | |
b10110001 H | |
#1465 | |
0* | |
#1470 | |
0% | |
b00000000000000000000000001001010 ) | |
#1480 | |
1% | |
#1485 | |
1( | |
#1490 | |
0% | |
b00000000000000000000000001001011 ) | |
#1500 | |
1% | |
b00011001 E | |
b10110001 F | |
b00011010 G | |
#1505 | |
0( | |
#1510 | |
0% | |
b00000000000000000000000001001100 ) | |
#1520 | |
1% | |
b101100010001101000011001 " | |
#1525 | |
b00 & | |
b00 ' | |
#1530 | |
0% | |
b00000000000000000000000001001101 ) | |
#1540 | |
1% | |
b001100000000001000000001 " | |
#1550 | |
0% | |
b00000000000000000000000001001110 ) | |
#1560 | |
1% | |
#1570 | |
0% | |
b00000000000000000000000001001111 ) | |
#1580 | |
1% | |
#1585 | |
b01 ' | |
#1590 | |
0% | |
b00000000000000000000000001010000 ) | |
#1600 | |
1% | |
b011000000000010100000100 " | |
#1610 | |
0% | |
b00000000000000000000000001010001 ) | |
#1620 | |
1% | |
#1630 | |
0% | |
b00000000000000000000000001010010 ) | |
#1640 | |
1% | |
#1645 | |
b10 ' | |
#1650 | |
0% | |
b00000000000000000000000001010011 ) | |
#1660 | |
1% | |
b100100000000100000000111 " | |
#1670 | |
0% | |
b00000000000000000000000001010100 ) | |
#1680 | |
1% | |
#1690 | |
0% | |
b00000000000000000000000001010101 ) | |
#1700 | |
1% | |
#1705 | |
b01 & | |
b00 ' | |
#1710 | |
0% | |
b00000000000000000000000001010110 ) | |
#1720 | |
1% | |
b110000000000101100001010 " | |
#1730 | |
0% | |
b00000000000000000000000001010111 ) | |
#1740 | |
1% | |
#1750 | |
0% | |
b00000000000000000000000001011000 ) | |
#1760 | |
1% | |
#1765 | |
b01 ' | |
#1770 | |
0% | |
b00000000000000000000000001011001 ) | |
#1780 | |
1% | |
b111100000000111000001101 " | |
#1790 | |
0% | |
b00000000000000000000000001011010 ) | |
#1800 | |
1% | |
#1810 | |
0% | |
b00000000000000000000000001011011 ) | |
#1820 | |
1% | |
#1825 | |
b10 ' | |
#1830 | |
0% | |
b00000000000000000000000001011100 ) | |
#1840 | |
1% | |
b001000010001000100010000 " | |
#1850 | |
0% | |
b00000000000000000000000001011101 ) | |
#1860 | |
1% | |
#1870 | |
0% | |
b00000000000000000000000001011110 ) | |
#1880 | |
1% | |
#1885 | |
b10 & | |
b00 ' | |
#1890 | |
0% | |
b00000000000000000000000001011111 ) | |
#1900 | |
1% | |
b010100010001010000010011 " | |
#1910 | |
0% | |
b00000000000000000000000001100000 ) | |
#1920 | |
1% | |
#1930 | |
0% | |
b00000000000000000000000001100001 ) | |
#1940 | |
1% | |
#1945 | |
b01 ' | |
#1950 | |
0% | |
b00000000000000000000000001100010 ) | |
#1960 | |
1% | |
b100000010001011100010110 " | |
#1970 | |
0% | |
b00000000000000000000000001100011 ) | |
#1980 | |
1% | |
#1990 | |
0% | |
b00000000000000000000000001100100 ) | |
#2000 | |
1% | |
#2005 | |
b10 ' | |
#2010 | |
0% | |
b00000000000000000000000001100101 ) | |
#2020 | |
1% | |
b101100010001101000011001 " | |
#2030 | |
0% | |
b00000000000000000000000001100110 ) | |
#2040 | |
1% | |
#2050 | |
0% | |
b00000000000000000000000001100111 ) | |
#2060 | |
1% | |
#2065 | |
#2070 | |
0% | |
b00000000000000000000000001101000 ) | |
#2080 | |
1% | |
#2090 | |
0% | |
b00000000000000000000000001101001 ) | |
#2100 | |
1% | |
#2110 | |
0% | |
b00000000000000000000000001101010 ) | |
#2120 | |
1% | |
#2130 | |
0% | |
b00000000000000000000000001101011 ) | |
#2140 | |
1% | |
#2150 | |
0% | |
b00000000000000000000000001101100 ) | |
#2160 | |
1% | |
#2165 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment