commit 7d857bf0847f7c3920b58e44944307627b49c4c1 Author: vikram Date: Wed Mar 3 18:25:36 2021 +0530 encoder_forzen_bit_insertion_v1 diff --git a/sim_1/imports/Downloads/encoder_frozen_bit_insertion_tb_1.sv b/sim_1/imports/Downloads/encoder_frozen_bit_insertion_tb_1.sv new file mode 100644 index 0000000..a0eebfd --- /dev/null +++ b/sim_1/imports/Downloads/encoder_frozen_bit_insertion_tb_1.sv @@ -0,0 +1,86 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: BITSILICA PRIVATE LIMITED +// Engineer: ABHIGNA.B +// +// Create Date: 19/02/2021 10:47:19 AM +// Design Name: ENCODER FROZEN BIT INSERTION +// Module Name: encoder_frozen_bit_insertion_tb +// Project Name: POLAR ENCODER-DECODER +// Target Devices: Zynq UltraScale+ ZCU111 Evaluation Platform (xczu28dr-ffvg1517-2-e) +// Tool Versions: VIVADO 2020.1 +// Description: TB code to verify RTL for inserting frozen bits into message, according to given reliability sequence. +// +// Dependencies: +// +// Revision:2.0 +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + +// encoder_frozen_bit_insertion_tb is written to verify encoder_frozen_bit_insertion_rtl +module encoder_frozen_bit_insertion_tb(); + +parameter N = 32; //12; // length of information+CRC+Frozen bits +parameter K = 16; //4; // length of information+CRC bits + +reg clock_i = 1'b0; // system clock +reg reset_ni = 1'b1; // active low synchronous reset +reg [9:0]N_in; +reg [8:0]K_in; +reg [K-1:0] msg_i; // input information+CRC bits +//wire [9:0] pc_pos1_o,pc_pos2_o,pc_pos3_o; // first, second, third positions to insert parity check bits +wire [N-1:0] msg_o; // information+CRC+frozen bits + + wire [9:0] index_out32; + wire [9:0] index_out64; + wire [9:0] index_out128; + wire [9:0] index_out256; + wire [9:0] index_out512; + wire [511:0]msg_1_out; + // Instantiating and connecting the design module with test bench + encoder_frozen_bit_insertion_rtl #( + .N(N), + .K(K) + )DUT( + .clock_i(clock_i), + .reset_ni(reset_ni), + .msg_i(msg_i), + .N_in (N_in), + .K_in (K_in), + //.pc_pos1_o(pc_pos1_o), + //.pc_pos2_o(pc_pos2_o), + //.pc_pos3_o(pc_pos3_o), + . msg_o(msg_o), + //. index_out32 ( index_out32), + . index_out64(index_out64), + . index_out128(index_out128), + . index_out256(index_out256), + . index_out512(index_out512), + .msg_1_out(msg_1_out) ); + + + always #2.03 clock_i = !clock_i; // clock generation + + initial begin + @(negedge clock_i); // waiting for the negedge of clock_i + reset_ni = 'd0; // activating the reset_ni + @(negedge clock_i); + reset_ni = 'd1; // deactivating the reset_ni + N_in = 'd32; + K_in = 'd16; + @(negedge clock_i); + msg_i = 'hC8F5; //aaaabbbbccccddddaaaabbbbccccddddeeeeffff111122223333444455556666; // applying inputs to the DUT + #74 + @(negedge clock_i); + msg_i = 'hACF5; //'h3; + //reset_ni = 'd0; + @(negedge clock_i); + msg_i = 'h9C83; //4'b1101; + #30 $finish; + end + +endmodule + + diff --git a/sources_1/imports/Downloads/encoder_frozen_bit_insertion_rtl_1.sv b/sources_1/imports/Downloads/encoder_frozen_bit_insertion_rtl_1.sv new file mode 100644 index 0000000..e3b37cc --- /dev/null +++ b/sources_1/imports/Downloads/encoder_frozen_bit_insertion_rtl_1.sv @@ -0,0 +1,513 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: BITSILICA PRIVATE LIMITED +// Engineer: ABHIGNA.B +// +// Create Date: 19/02/2021 10:47:19 AM +// Design Name: ENCODER FROZEN BIT INSERTION +// Module Name: encoder_frozen_bit_insertion_rtl +// Project Name: POLAR ENCODER-DECODER +// Target Devices: Zynq UltraScale+ ZCU111 Evaluation Platform (xczu28dr-ffvg1517-2-e) +// Tool Versions: VIVADO 2020.1 +// Description: RTL code for inserting frozen bits into information, according to given reliability sequence. +// +// Dependencies: +// +// Revision:2.0 +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + +// encoder_frozen_bit_insertion_rtl is written to insert frozen bits in between information bits, according to reliability sequence +module encoder_frozen_bit_insertion_rtl#( + parameter N = 32, //128, // length of information+CRC+Frozen bits + parameter K = 16 //64 // length of information+CRC bits +) ( + input wire clock_i, // system clock + input wire reset_ni, // active low synchronous reset + input wire [9:0]N_in, + input wire [8:0]K_in, + input wire [K-1:0] msg_i, // input information+CRC bits + //output reg [9:0] pc_pos1_o, // first position to insert parity check bit + // output reg [9:0] pc_pos2_o, // second position to insert parity check bit + //output reg [9:0] pc_pos3_o, // third position to insert parity check bit + output reg [N-1:0] msg_o, // information+CRC+frozen bits + + // output reg [9:0]index_out32, + output reg [9:0]index_out64, + output reg [9:0]index_out128, + output reg [9:0]index_out256, + output reg [9:0]index_out512, + output reg [511:0]msg_1_out +); + + reg [9:0] pc_pos1_1, pc_pos2_1, pc_pos3_1; // internal registers to hold the parity check bit postions + reg [N-1:0] msg_1; // internal register to hold the output of frozen bit insertion + + int i,j,k='d0,p='d0,q='d0,x='d0; // looping variables + + reg [9:0]frz_pos[N-1:0]; // internal register to store reliability sequence depending on N value + reg [4:0]rel_seq_enable; + reg [9:0] addrs_cntr; + //reg rel_seq_enable; + reg rel_seq_en_dly,rel_seq_en_dly1; + + wire [9:0]index_out32; + reg [9:0]index_out32_dly; + wire [8:0]indx_K; + + // storing the frozen locations in rel_seq array (reliability in ascending order) + + /*reg [9:0]rel_seq[1023:0] = '{ 10'd0 , 10'd1 , 10'd2 , 10'd4 , 10'd8 , 10'd16 , 10'd32 , 10'd3 , 10'd5 , 10'd64 , 10'd9 , + 10'd6 , 10'd17 , 10'd10 , 10'd18 , 10'd128 , 10'd12 , 10'd33 , 10'd65 , 10'd20 , 10'd256 , 10'd34 , 10'd24 , 10'd36 , + 10'd7 , 10'd129 , 10'd66 , 10'd512 , 10'd11 , 10'd40 , 10'd68 , 10'd130 , 10'd19 , 10'd13 , 10'd48 , 10'd14 , 10'd72 , + 10'd257 , 10'd21 , 10'd132 , 10'd35 , 10'd258 , 10'd26 , 10'd513 , 10'd80 , 10'd37 , 10'd25 , 10'd22 , 10'd136 ,10'd260 , + 10'd264 , 10'd38 , 10'd514 , 10'd96 , 10'd67 , 10'd41 , 10'd144 , 10'd28 , 10'd69 , 10'd42 , 10'd516 ,10'd49 , 10'd74 , + 10'd272 , 10'd160 , 10'd520 , 10'd288 , 10'd528 , 10'd192 , 10'd544 , 10'd70 , 10'd44 , 10'd131 ,10'd81 , 10'd50 , 10'd73 , + 10'd15 , 10'd320 , 10'd133 , 10'd52 , 10'd23 , 10'd134 , 10'd384 , 10'd76 , 10'd137 ,10'd82 , 10'd56 , 10'd27 , 10'd97 , + 10'd39 , 10'd259 , 10'd84 , 10'd138 , 10'd145 , 10'd261 , 10'd29 , 10'd43 , 10'd98 , 10'd515 , 10'd88 , 10'd140 , 10'd30 , + 10'd146 , 10'd71 , 10'd262 , 10'd265 , 10'd161 , 10'd576 , 10'd45 ,10'd100 , 10'd640 , 10'd51 , 10'd148 , 10'd46 , 10'd75 , + 10'd266 , 10'd273 , 10'd517 , 10'd104 , 10'd162 , 10'd53 ,10'd193 , 10'd152 , 10'd77 , 10'd164 , 10'd768 , 10'd268 , 10'd274 , + 10'd518 , 10'd54 , 10'd83 , 10'd57 , 10'd521 ,10'd112 , 10'd135 , 10'd78 , 10'd289 , 10'd194 , 10'd85 , 10'd276 , 10'd522 , + 10'd58 , 10'd168 , 10'd139 , 10'd99 ,10'd86 , 10'd60 , 10'd280 , 10'd89 , 10'd290 , 10'd529 , 10'd524 , 10'd196 , 10'd141 , + 10'd101 , 10'd147 , 10'd176 , 10'd142 , 10'd530 , 10'd321 , 10'd31 , 10'd200 , 10'd90 , 10'd545 , 10'd292 , 10'd322 , 10'd532 , + 10'd263 , 10'd149 , 10'd102 , 10'd105 , 10'd304 , 10'd296 , 10'd163 , 10'd92 , 10'd47 , 10'd267 , 10'd385 , 10'd546 , 10'd324 , + 10'd208 , 10'd386 , 10'd150 , 10'd153 , 10'd165 , 10'd106 , 10'd55 , 10'd328 , 10'd536 , 10'd577 , 10'd548 , 10'd113 , 10'd154 , + 10'd79 , 10'd269 , 10'd108 , 10'd578 , 10'd224 , 10'd166 , 10'd519 ,10'd552 , 10'd195 , 10'd270 , 10'd641 , 10'd523 , 10'd275 , + 10'd580 , 10'd291 , 10'd59 , 10'd169 , 10'd560 , 10'd114 , 10'd277 , 10'd156 , 10'd87 , 10'd197 , 10'd116 , 10'd170 , 10'd61 , + 10'd531 , 10'd525 , 10'd642 , 10'd281 , 10'd278 , 10'd526 , 10'd177 , 10'd293 , 10'd388 , 10'd91 , 10'd584 , 10'd769 , 10'd198 , + 10'd172 , 10'd120 , 10'd201 , 10'd336 , 10'd62 , 10'd282 , 10'd143 , 10'd103 , 10'd178 , 10'd294 , 10'd93 , 10'd644 , 10'd202 , + 10'd592 , 10'd323 , 10'd392 , 10'd297 , 10'd770 , 10'd107 , 10'd180 , 10'd151 , 10'd209 , 10'd284 , 10'd648 , 10'd94 , 10'd204 , + 10'd298 , 10'd400 , 10'd608 , 10'd352 , 10'd325 , 10'd533 , 10'd155 , 10'd210 , 10'd305 , 10'd547 , 10'd300 , 10'd109 , 10'd184 , + 10'd534 , 10'd537 , 10'd115 , 10'd167 , 10'd225 , 10'd326 , 10'd306 , 10'd772 , 10'd157 , 10'd656 , 10'd329 , 10'd110 , 10'd117 , + 10'd212 , 10'd171 , 10'd776 , 10'd330 , 10'd226 , 10'd549 , 10'd538 , 10'd387 , 10'd308 , 10'd216 , 10'd416 , 10'd271 , 10'd279 , + 10'd158 , 10'd337 , 10'd550 , 10'd672 , 10'd118 , 10'd332 , 10'd579 , 10'd540 , 10'd389 , 10'd173 , 10'd121 , 10'd553 , 10'd199 , + 10'd784 , 10'd179 , 10'd228 , 10'd338 , 10'd312 , 10'd704 , 10'd390 , 10'd174 , 10'd554 , 10'd581 , 10'd393 , 10'd283 , 10'd122 , + 10'd448 , 10'd353 , 10'd561 , 10'd203 , 10'd63 , 10'd340 , 10'd394 , 10'd527 , 10'd582 , 10'd556 , 10'd181 , 10'd295 , 10'd285 , + 10'd232 , 10'd124 , 10'd205 , 10'd182 , 10'd643 , 10'd562 , 10'd286 , 10'd585 , 10'd299 , 10'd354 , 10'd211 , 10'd401 , 10'd185 , + 10'd396 , 10'd344 , 10'd586 , 10'd645 , 10'd593 , 10'd535 , 10'd240 , 10'd206 , 10'd95 , 10'd327 , 10'd564 , 10'd800 , 10'd402 , + 10'd356 , 10'd307 , 10'd301 , 10'd417 , 10'd213 , 10'd568 , 10'd832 , 10'd588 , 10'd186 , 10'd646 , 10'd404 , 10'd227 , 10'd896 , + 10'd594 , 10'd418 , 10'd302 , 10'd649 , 10'd771 , 10'd360 , 10'd539 , 10'd111 , 10'd331 , 10'd214 , 10'd309 , 10'd188 , 10'd449 , + 10'd217 , 10'd408 , 10'd609 , 10'd596 , 10'd551 , 10'd650 , 10'd229 , 10'd159 , 10'd420 , 10'd310 , 10'd541 , 10'd773 , 10'd610 , + 10'd657 , 10'd333 , 10'd119 , 10'd600 , 10'd339 , 10'd218 , 10'd368 , 10'd652 , 10'd230 , 10'd391 , 10'd313 , 10'd450 , 10'd542 , + 10'd334 , 10'd233 , 10'd555 , 10'd774 , 10'd175 , 10'd123 , 10'd658 , 10'd612 , 10'd341 , 10'd777 , 10'd220 , 10'd314 , 10'd424 , + 10'd395 , 10'd673 , 10'd583 , 10'd355 , 10'd287 , 10'd183 , 10'd234 , 10'd125 , 10'd557 , 10'd660 , 10'd616 , 10'd342 , 10'd316 , + 10'd241 , 10'd778 , 10'd563 , 10'd345 , 10'd452 , 10'd397 , 10'd403 , 10'd207 , 10'd674 , 10'd558 , 10'd785 , 10'd432 , 10'd357 , + 10'd187 , 10'd236 , 10'd664 , 10'd624 , 10'd587 , 10'd780 , 10'd705 , 10'd126 , 10'd242 , 10'd565 , 10'd398 , 10'd346 , 10'd456 , + 10'd358 , 10'd405 , 10'd303 , 10'd569 , 10'd244 , 10'd595 , 10'd189 , 10'd566 , 10'd676 , 10'd361 , 10'd706 , 10'd589 , 10'd215 , + 10'd786 , 10'd647 , 10'd348 , 10'd419 , 10'd406 , 10'd464 , 10'd680 , 10'd801 , 10'd362 , 10'd590 , 10'd409 , 10'd570 , 10'd788 , + 10'd597 , 10'd572 , 10'd219 , 10'd311 , 10'd708 , 10'd598 , 10'd601 , 10'd651 , 10'd421 , 10'd792 , 10'd802 , 10'd611 , 10'd602 , + 10'd410 , 10'd231 , 10'd688 , 10'd653 , 10'd248 , 10'd369 , 10'd190 , 10'd364 , 10'd654 , 10'd659 , 10'd335 , 10'd480 , 10'd315 , + 10'd221 , 10'd370 , 10'd613 , 10'd422 , 10'd425 , 10'd451 , 10'd614 , 10'd543 , 10'd235 , 10'd412 , 10'd343 , 10'd372 , 10'd775 , + 10'd317 , 10'd222 , 10'd426 , 10'd453 , 10'd237 , 10'd559 , 10'd833 , 10'd804 , 10'd712 , 10'd834 , 10'd661 , 10'd808 , 10'd779 , + 10'd617 , 10'd604 , 10'd433 , 10'd720 , 10'd816 , 10'd836 , 10'd347 , 10'd897 , 10'd243 , 10'd662 , 10'd454 , 10'd318 , 10'd675 , + 10'd618 , 10'd898 , 10'd781 , 10'd376 , 10'd428 , 10'd665 , 10'd736 , 10'd567 , 10'd840 , 10'd625 , 10'd238 , 10'd359 , 10'd457 , + 10'd399 , 10'd787 , 10'd591 , 10'd678 , 10'd434 , 10'd677 , 10'd349 , 10'd245 , 10'd458 , 10'd666 , 10'd620 , 10'd363 , 10'd127 , + 10'd191 , 10'd782 , 10'd407 , 10'd436 , 10'd626 , 10'd571 , 10'd465 , 10'd681 , 10'd246 , 10'd707 , 10'd350 , 10'd599 , 10'd668 , + 10'd790 , 10'd460 , 10'd249 , 10'd682 , 10'd573 , 10'd411 , 10'd803 , 10'd789 , 10'd709 , 10'd365 , 10'd440 , 10'd628 , 10'd689 , + 10'd374 , 10'd423 , 10'd466 , 10'd793 , 10'd250 , 10'd371 , 10'd481 , 10'd574 , 10'd413 , 10'd603 , 10'd366 , 10'd468 , 10'd655 , + 10'd900 , 10'd805 , 10'd615 , 10'd684 , 10'd710 , 10'd429 , 10'd794 , 10'd252 , 10'd373 , 10'd605 , 10'd848 , 10'd690 , 10'd713 , + 10'd632 , 10'd482 , 10'd806 , 10'd427 , 10'd904 , 10'd414 , 10'd223 , 10'd663 , 10'd692 , 10'd835 , 10'd619 , 10'd472 , 10'd455 , + 10'd796 , 10'd809 , 10'd714 , 10'd721 , 10'd837 , 10'd716 , 10'd864 , 10'd810 , 10'd606 , 10'd912 , 10'd722 , 10'd696 , 10'd377 , + 10'd435 , 10'd817 , 10'd319 , 10'd621 , 10'd812 , 10'd484 , 10'd430 , 10'd838 , 10'd667 , 10'd488 , 10'd239 , 10'd378 , 10'd459 , + 10'd622 , 10'd627 , 10'd437 , 10'd380 , 10'd818 , 10'd461 , 10'd496 , 10'd669 , 10'd679 , 10'd724 , 10'd841 , 10'd629 , 10'd351 , + 10'd467 , 10'd438 , 10'd737 , 10'd251 , 10'd462 , 10'd442 , 10'd441 , 10'd469 , 10'd247 , 10'd683 , 10'd842 , 10'd738 , 10'd899 , + 10'd670 , 10'd783 , 10'd849 , 10'd820 , 10'd728 , 10'd928 , 10'd791 , 10'd367 , 10'd901 , 10'd630 , 10'd685 , 10'd844 , 10'd633 , + 10'd711 , 10'd253 , 10'd691 , 10'd824 , 10'd902 , 10'd686 , 10'd740 , 10'd850 , 10'd375 , 10'd444 , 10'd470 , 10'd483 , 10'd415 , + 10'd485 , 10'd905 , 10'd795 , 10'd473 , 10'd634 , 10'd744 , 10'd852 , 10'd960 , 10'd865 , 10'd693 , 10'd797 , 10'd906 , 10'd715 , + 10'd807 , 10'd474 , 10'd636 , 10'd694 , 10'd254 , 10'd717 , 10'd575 , 10'd913 , 10'd798 , 10'd811 , 10'd379 , 10'd697 , 10'd431 , + 10'd607 , 10'd489 , 10'd866 , 10'd723 , 10'd486 , 10'd908 , 10'd718 , 10'd813 , 10'd476 , 10'd856 , 10'd839 , 10'd725 , 10'd698 , + 10'd914 , 10'd752 , 10'd868 , 10'd819 , 10'd814 , 10'd439 , 10'd929 , 10'd490 , 10'd623 , 10'd671 , 10'd739 , 10'd916 , 10'd463 , + 10'd843 , 10'd381 , 10'd497 , 10'd930 , 10'd821 , 10'd726 , 10'd961 , 10'd872 , 10'd492 , 10'd631 , 10'd729 , 10'd700 , 10'd443 , + 10'd741 , 10'd845 , 10'd920 , 10'd382 , 10'd822 , 10'd851 , 10'd730 , 10'd498 , 10'd880 , 10'd742 , 10'd445 , 10'd471 , 10'd635 , + 10'd932 , 10'd687 , 10'd903 , 10'd825 , 10'd500 , 10'd846 , 10'd745 , 10'd826 , 10'd732 , 10'd446 , 10'd962 , 10'd936 , 10'd475 , + 10'd853 , 10'd867 , 10'd637 , 10'd907 , 10'd487 , 10'd695 , 10'd746 , 10'd828 , 10'd753 , 10'd854 , 10'd857 , 10'd504 , 10'd799 , + 10'd255 , 10'd964 , 10'd909 , 10'd719 , 10'd477 , 10'd915 , 10'd638 , 10'd748 , 10'd944 , 10'd869 , 10'd491 , 10'd699 , 10'd754 , + 10'd858 , 10'd478 , 10'd968 , 10'd383 , 10'd910 , 10'd815 , 10'd976 , 10'd870 , 10'd917 , 10'd727 , 10'd493 , 10'd873 , 10'd701 , + 10'd931 , 10'd756 , 10'd860 , 10'd499 , 10'd731 , 10'd823 , 10'd922 , 10'd874 , 10'd918 , 10'd502 , 10'd933 , 10'd743 , 10'd760 , + 10'd881 , 10'd494 , 10'd702 , 10'd921 , 10'd501 , 10'd876 , 10'd847 , 10'd992 , 10'd447 , 10'd733 , 10'd827 , 10'd934 , 10'd882 , + 10'd937 , 10'd963 , 10'd747 , 10'd505 , 10'd855 , 10'd924 , 10'd734 , 10'd829 , 10'd965 , 10'd938 , 10'd884 , 10'd506 , 10'd749 , + 10'd945 , 10'd966 , 10'd755 , 10'd859 , 10'd940 , 10'd830 , 10'd911 , 10'd871 , 10'd639 , 10'd888 , 10'd479 , 10'd946 , 10'd750 , + 10'd969 , 10'd508 , 10'd861 , 10'd757 , 10'd970 , 10'd919 , 10'd875 , 10'd862 , 10'd758 , 10'd948 , 10'd977 , 10'd923 , 10'd972 , + 10'd761 , 10'd877 , 10'd952 , 10'd495 , 10'd703 , 10'd935 , 10'd978 , 10'd883 , 10'd762 , 10'd503 , 10'd925 , 10'd878 , 10'd735 , + 10'd993 , 10'd885 , 10'd939 , 10'd994 , 10'd980 , 10'd926 , 10'd764 , 10'd941 , 10'd967 , 10'd886 , 10'd831 , 10'd947 , 10'd507 , + 10'd889 , 10'd984 , 10'd751 , 10'd942 , 10'd996 , 10'd971 , 10'd890 , 10'd509 , 10'd949 , 10'd973 , 10'd1000 , 10'd892 , 10'd950 , + 10'd863 , 10'd759 , 10'd1008 , 10'd510 , 10'd979 , 10'd953 , 10'd763 , 10'd974 , 10'd954 , 10'd879 , 10'd981 , 10'd982 , 10'd927 , + 10'd995 , 10'd765 , 10'd956 , 10'd887 , 10'd985 , 10'd997 , 10'd986 , 10'd943 , 10'd891 , 10'd998 , 10'd766 , 10'd511 , 10'd988 , + 10'd1001 , 10'd951 , 10'd1002 , 10'd893 , 10'd975 , 10'd894 , 10'd1009 , 10'd955 , 10'd1004 , 10'd1010 , 10'd957 , 10'd983 , 10'd958 , + 10'd987 , 10'd1012 , 10'd999 , 10'd1016 , 10'd767 , 10'd989 , 10'd1003 , 10'd990 , 10'd1005 , 10'd959 , 10'd1011 , 10'd1013 , 10'd895 , + 10'd1006 , 10'd1014 , 10'd1017 , 10'd1018 , 10'd991 , 10'd1020 , 10'd1007 , 10'd1015 , 10'd1019 , 10'd1021 , 10'd1022 , 10'd1023 };*/ + + // storing the frozen locations in rel_seq array (reliability in descending order) +/* reg [9:0]rel_seq[1023:0] = + '{ 10'd1023, 10'd1022 , 10'd1021 , 10'd1019 , 10'd1015 , 10'd1007 , 10'd1020 , 10'd991 , 10'd1018 , 10'd1017 , 10'd1014 , 10'd1006 , + 10'd895 , 10'd1013 , 10'd1011 , 10'd959 , 10'd1005 , 10'd990 , 10'd1003 , 10'd989 , 10'd767 , 10'd1016 , 10'd999 , 10'd1012 , + 10'd987 , 10'd958 , 10'd983 , 10'd957 , 10'd1010 , 10'd1004 , 10'd955 , 10'd1009 , 10'd894 , 10'd975 , 10'd893 , 10'd1002 , 10'd951 , + 10'd1001 , 10'd988 , 10'd511 , 10'd766 , 10'd998 , 10'd891 , 10'd943 , 10'd986 , 10'd997 , 10'd985 , 10'd887 , 10'd956 , 10'd765 , + 10'd995 , 10'd927 , 10'd982 , 10'd981 , 10'd879 , 10'd954 , 10'd974 , 10'd763 , 10'd953 , 10'd979 , 10'd510 , 10'd1008 , 10'd759 , + 10'd863 , 10'd950 , 10'd892 , 10'd1000 , 10'd973 , 10'd949 , 10'd509 , 10'd890 , 10'd971 , 10'd996 , 10'd942 , 10'd751 , 10'd984 , + 10'd889 , 10'd507 , 10'd947 , 10'd831 , 10'd886 , 10'd967 , 10'd941 , 10'd764 , 10'd926 , 10'd980 , 10'd994 , 10'd939 , 10'd885 , + 10'd993 , 10'd735 , 10'd878 , 10'd925 , 10'd503 , 10'd762 , 10'd883 , 10'd978 , 10'd935 , 10'd703 , 10'd495 , 10'd952 , 10'd877 , + 10'd761 , 10'd972 , 10'd923 , 10'd977 , 10'd948 , 10'd758 , 10'd862 , 10'd875 , 10'd919 , 10'd970 , 10'd757 , 10'd861 , 10'd508 , + 10'd969 , 10'd750 , 10'd946 , 10'd479 , 10'd888 , 10'd639 , 10'd871 , 10'd911 , 10'd830 , 10'd940 , 10'd859 , 10'd755 , 10'd966 , + 10'd945 , 10'd749 , 10'd506 , 10'd884 , 10'd938 , 10'd965 , 10'd829 , 10'd734 , 10'd924 , 10'd855 , 10'd505 , 10'd747 , 10'd963 , + 10'd937 , 10'd882 , 10'd934 , 10'd827 , 10'd733 , 10'd447 , 10'd992 , 10'd847 , 10'd876 , 10'd501 , 10'd921 , 10'd702 , 10'd494 , + 10'd881 , 10'd760 , 10'd743 , 10'd933 , 10'd502 , 10'd918 , 10'd874 , 10'd922 , 10'd823 , 10'd731 , 10'd499 , 10'd860 , 10'd756 , + 10'd931 , 10'd701 , 10'd873 , 10'd493 , 10'd727 , 10'd917 , 10'd870 , 10'd976 , 10'd815 , 10'd910 , 10'd383 , 10'd968 , 10'd478 , + 10'd858 , 10'd754 , 10'd699 , 10'd491 , 10'd869 , 10'd944 , 10'd748 , 10'd638 , 10'd915 , 10'd477 , 10'd719 , 10'd909 , 10'd964 , + 10'd255 , 10'd799 , 10'd504 , 10'd857 , 10'd854 , 10'd753 , 10'd828 , 10'd746 , 10'd695 , 10'd487 , 10'd907 , 10'd637 , 10'd867 , + 10'd853 , 10'd475 , 10'd936 , 10'd962 , 10'd446 , 10'd732 , 10'd826 , 10'd745 , 10'd846 , 10'd500 , 10'd825 , 10'd903 , 10'd687 , + 10'd932 , 10'd635 , 10'd471 , 10'd445 , 10'd742 , 10'd880 , 10'd498 , 10'd730 , 10'd851 , 10'd822 , 10'd382 , 10'd920 , 10'd845 , + 10'd741 , 10'd443 , 10'd700 , 10'd729 , 10'd631 , 10'd492 , 10'd872 , 10'd961 , 10'd726 , 10'd821 , 10'd930 , 10'd497 , 10'd381 , + 10'd843 , 10'd463 , 10'd916 , 10'd739 , 10'd671 , 10'd623 , 10'd490 , 10'd929 , 10'd439 , 10'd814 , 10'd819 , 10'd868 , 10'd752 , + 10'd914 , 10'd698 , 10'd725 , 10'd839 , 10'd856 , 10'd476 , 10'd813 , 10'd718 , 10'd908 , 10'd486 , 10'd723 , 10'd866 , 10'd489 , + 10'd607 , 10'd431 , 10'd697 , 10'd379 , 10'd811 , 10'd798 , 10'd913 , 10'd575 , 10'd717 , 10'd254 , 10'd694 , 10'd636 , 10'd474 , + 10'd807 , 10'd715 , 10'd906 , 10'd797 , 10'd693 , 10'd865 , 10'd960 , 10'd852 , 10'd744 , 10'd634 , 10'd473 , 10'd795 , 10'd905 , + 10'd485 , 10'd415 , 10'd483 , 10'd470 , 10'd444 , 10'd375 , 10'd850 , 10'd740 , 10'd686 , 10'd902 , 10'd824 , 10'd691 , 10'd253 , + 10'd711 , 10'd633 , 10'd844 , 10'd685 , 10'd630 , 10'd901 , 10'd367 , 10'd791 , 10'd928 , 10'd728 , 10'd820 , 10'd849 , 10'd783 , + 10'd670 , 10'd899 , 10'd738 , 10'd842 , 10'd683 , 10'd247 , 10'd469 , 10'd441 , 10'd442 , 10'd462 , 10'd251 , 10'd737 , 10'd438 , + 10'd467 , 10'd351 , 10'd629 , 10'd841 , 10'd724 , 10'd679 , 10'd669 , 10'd496 , 10'd461 , 10'd818 , 10'd380 , 10'd437 , 10'd627 , + 10'd622 , 10'd459 , 10'd378 , 10'd239 , 10'd488 , 10'd667 , 10'd838 , 10'd430 , 10'd484 , 10'd812 , 10'd621 , 10'd319 , 10'd817 , + 10'd435 , 10'd377 , 10'd696 , 10'd722 , 10'd912 , 10'd606 , 10'd810 , 10'd864 , 10'd716 , 10'd837 , 10'd721 , 10'd714 , 10'd809 , + 10'd796 , 10'd455 , 10'd472 , 10'd619 , 10'd835 , 10'd692 , 10'd663 , 10'd223 , 10'd414 , 10'd904 , 10'd427 , 10'd806 , 10'd482 , + 10'd632 , 10'd713 , 10'd690 , 10'd848 , 10'd605 , 10'd373 , 10'd252 , 10'd794 , 10'd429 , 10'd710 , 10'd684 , 10'd615 , 10'd805 , + 10'd900 , 10'd655 , 10'd468 , 10'd366 , 10'd603 , 10'd413 , 10'd574 , 10'd481 , 10'd371 , 10'd250 , 10'd793 , 10'd466 , 10'd423 , + 10'd374 , 10'd689 , 10'd628 , 10'd440 , 10'd365 , 10'd709 , 10'd789 , 10'd803 , 10'd411 , 10'd573 , 10'd682 , 10'd249 , 10'd460 , + 10'd790 , 10'd668 , 10'd599 , 10'd350 , 10'd707 , 10'd246 , 10'd681 , 10'd465 , 10'd571 , 10'd626 , 10'd436 , 10'd407 , 10'd782 , + 10'd191 , 10'd127 , 10'd363 , 10'd620 , 10'd666 , 10'd458 , 10'd245 , 10'd349 , 10'd677 , 10'd434 , 10'd678 , 10'd591 , 10'd787 , + 10'd399 , 10'd457 , 10'd359 , 10'd238 , 10'd625 , 10'd840 , 10'd567 , 10'd736 , 10'd665 , 10'd428 , 10'd376 , 10'd781 , 10'd898 , + 10'd618 , 10'd675 , 10'd318 , 10'd454 , 10'd662 , 10'd243 , 10'd897 , 10'd347 , 10'd836 , 10'd816 , 10'd720 , 10'd433 , 10'd604 , + 10'd617 , 10'd779 , 10'd808 , 10'd661 , 10'd834 , 10'd712 , 10'd804 , 10'd833 , 10'd559 , 10'd237 , 10'd453 , 10'd426 , 10'd222 , + 10'd317 , 10'd775 , 10'd372 , 10'd343 , 10'd412 , 10'd235 , 10'd543 , 10'd614 , 10'd451 , 10'd425 , 10'd422 , 10'd613 , 10'd370 , + 10'd221 , 10'd315 , 10'd480 , 10'd335 , 10'd659 , 10'd654 , 10'd364 , 10'd190 , 10'd369 , 10'd248 , 10'd653 , 10'd688 , 10'd231 , + 10'd410 , 10'd602 , 10'd611 , 10'd802 , 10'd792 , 10'd421 , 10'd651 , 10'd601 , 10'd598 , 10'd708 , 10'd311 , 10'd219 , 10'd572 , + 10'd597 , 10'd788 , 10'd570 , 10'd409 , 10'd590 , 10'd362 , 10'd801 , 10'd680 , 10'd464 , 10'd406 , 10'd419 , 10'd348 , 10'd647 , + 10'd786 , 10'd215 , 10'd589 , 10'd706 , 10'd361 , 10'd676 , 10'd566 , 10'd189 , 10'd595 , 10'd244 , 10'd569 , 10'd303 , 10'd405 , + 10'd358 , 10'd456 , 10'd346 , 10'd398 , 10'd565 , 10'd242 , 10'd126 , 10'd705 , 10'd780 , 10'd587 , 10'd624 , 10'd664 , 10'd236 , + 10'd187 , 10'd357 , 10'd432 , 10'd785 , 10'd558 , 10'd674 , 10'd207 , 10'd403 , 10'd397 , 10'd452 , 10'd345 , 10'd563 , 10'd778 , + 10'd241 , 10'd316 , 10'd342 , 10'd616 , 10'd660 , 10'd557 , 10'd125 , 10'd234 , 10'd183 , 10'd287 , 10'd355 , 10'd583 , 10'd673 , + 10'd395 , 10'd424 , 10'd314 , 10'd220 , 10'd777 , 10'd341 , 10'd612 , 10'd658 , 10'd123 , 10'd175 , 10'd774 , 10'd555 , 10'd233 , + 10'd334 , 10'd542 , 10'd450 , 10'd313 , 10'd391 , 10'd230 , 10'd652 , 10'd368 , 10'd218 , 10'd339 , 10'd600 , 10'd119 , 10'd333 , + 10'd657 , 10'd610 , 10'd773 , 10'd541 , 10'd310 , 10'd420 , 10'd159 , 10'd229 , 10'd650 , 10'd551 , 10'd596 , 10'd609 , 10'd408 , + 10'd217 , 10'd449 , 10'd188 , 10'd309 , 10'd214 , 10'd331 , 10'd111 , 10'd539 , 10'd360 , 10'd771 , 10'd649 , 10'd302 , 10'd418 , + 10'd594 , 10'd896 , 10'd227 , 10'd404 , 10'd646 , 10'd186 , 10'd588 , 10'd832 , 10'd568 , 10'd213 , 10'd417 , 10'd301 , 10'd307 , + 10'd356 , 10'd402 , 10'd800 , 10'd564 , 10'd327 , 10'd95 , 10'd206 , 10'd240 , 10'd535 , 10'd593 , 10'd645 , 10'd586 , 10'd344 , + 10'd396 , 10'd185 , 10'd401 , 10'd211 , 10'd354 , 10'd299 , 10'd585 , 10'd286 , 10'd562 , 10'd643 , 10'd182 , 10'd205 , 10'd124 , + 10'd232 , 10'd285 , 10'd295 , 10'd181 , 10'd556 , 10'd582 , 10'd527 , 10'd394 , 10'd340 , 10'd63 , 10'd203 , 10'd561 , 10'd353 , + 10'd448 , 10'd122 , 10'd283 , 10'd393 , 10'd581 , 10'd554 , 10'd174 , 10'd390 , 10'd704 , 10'd312 , 10'd338 , 10'd228 , 10'd179 , + 10'd784 , 10'd199 , 10'd553 , 10'd121 , 10'd173 , 10'd389 , 10'd540 , 10'd579 , 10'd332 , 10'd118 , 10'd672 , 10'd550 , 10'd337 , + 10'd158 , 10'd279 , 10'd271 , 10'd416 , 10'd216 , 10'd308 , 10'd387 , 10'd538 , 10'd549 , 10'd226 , 10'd330 , 10'd776 , 10'd171 , + 10'd212 , 10'd117 , 10'd110 , 10'd329 , 10'd656 , 10'd157 , 10'd772 , 10'd306 , 10'd326 , 10'd225 , 10'd167 , 10'd115 , 10'd537 , + 10'd534 , 10'd184 , 10'd109 , 10'd300 , 10'd547 , 10'd305 , 10'd210 , 10'd155 , 10'd533 , 10'd325 , 10'd352 , 10'd608 , 10'd400 , + 10'd298 , 10'd204 , 10'd94 , 10'd648 , 10'd284 , 10'd209 , 10'd151 , 10'd180 , 10'd107 , 10'd770 , 10'd297 , 10'd392 , 10'd323 , + 10'd592 , 10'd202 , 10'd644 , 10'd93 , 10'd294 , 10'd178 , 10'd103 , 10'd143 , 10'd282 , 10'd62 , 10'd336 , 10'd201 , 10'd120 , + 10'd172 , 10'd198 , 10'd769 , 10'd584 , 10'd91 , 10'd388 , 10'd293 , 10'd177 , 10'd526 , 10'd278 , 10'd281 , 10'd642 , 10'd525 , + 10'd531 , 10'd61 , 10'd170 , 10'd116 , 10'd197 , 10'd87 , 10'd156 , 10'd277 , 10'd114 , 10'd560 , 10'd169 , 10'd59 , 10'd291 , + 10'd580 , 10'd275 , 10'd523 , 10'd641 , 10'd270 , 10'd195 ,10'd552 , 10'd519 , 10'd166 , 10'd224 , 10'd578 , 10'd108 , 10'd269 , + 10'd79 , 10'd154 , 10'd113 , 10'd548 , 10'd577 , 10'd536 , 10'd328 , 10'd55 , 10'd106 , 10'd165 , 10'd153 , 10'd150 , 10'd386 , + 10'd208 , 10'd324 , 10'd546 , 10'd385 , 10'd267 , 10'd47 , 10'd92 , 10'd163 , 10'd296 , 10'd304 , 10'd105 , 10'd102 , 10'd149 , + 10'd263 , 10'd532 , 10'd322 , 10'd292 , 10'd545 , 10'd90 , 10'd200 , 10'd31 , 10'd321 , 10'd530 , 10'd142 , 10'd176 , 10'd147 , + 10'd101 , 10'd141 , 10'd196 , 10'd524 , 10'd529 , 10'd290 , 10'd89 , 10'd280 , 10'd60 ,10'd86 , 10'd99 , 10'd139 , 10'd168 , + 10'd58 , 10'd522 , 10'd276 , 10'd85 , 10'd194 , 10'd289 , 10'd78 , 10'd135 ,10'd112 , 10'd521 , 10'd57 , 10'd83 , 10'd54 , + 10'd518 , 10'd274 , 10'd268 , 10'd768 , 10'd164 , 10'd77 , 10'd152 ,10'd193 , 10'd53 , 10'd162 , 10'd104 , 10'd517 , 10'd273 , + 10'd266 , 10'd75 , 10'd46 , 10'd148 , 10'd51 , 10'd640 ,10'd100 , 10'd45 , 10'd576 , 10'd161 , 10'd265 , 10'd262 , 10'd71 , + 10'd146 , 10'd30 , 10'd140 , 10'd88 , 10'd515 , 10'd98 , 10'd43 , 10'd29 , 10'd261 , 10'd145 , 10'd138 , 10'd84 , 10'd259 , + 10'd39 , 10'd97 , 10'd27 , 10'd56 ,10'd82 , 10'd137 , 10'd76 , 10'd384 , 10'd134 , 10'd23 , 10'd52 , 10'd133 , 10'd320 , + 10'd15 , 10'd73 , 10'd50 ,10'd81 , 10'd131 , 10'd44 , 10'd70 , 10'd544 , 10'd192 , 10'd528 , 10'd288 , 10'd520 , 10'd160 , + 10'd272 , 10'd74 ,10'd49 , 10'd516 , 10'd42 , 10'd69 , 10'd28 , 10'd144 , 10'd41 , 10'd67 , 10'd96 , 10'd514 , 10'd38 , + 10'd264 ,10'd260 , 10'd136 , 10'd22 , 10'd25 , 10'd37 , 10'd80 , 10'd513 , 10'd26 , 10'd258 , 10'd35 , 10'd132 , 10'd21 , + 10'd257 , 10'd72 , 10'd14 , 10'd48 , 10'd13 , 10'd19 , 10'd130 , 10'd68 , 10'd40 , 10'd11 , 10'd512 , 10'd66 , 10'd129 , + 10'd7 , 10'd36 , 10'd24 , 10'd34 , 10'd256 , 10'd20 , 10'd65 , 10'd33 , 10'd12 , 10'd128 , 10'd18 , 10'd10 , 10'd17 , + 10'd6 , 10'd9 , 10'd64 , 10'd5 , 10'd3 , 10'd32 , 10'd16 , 10'd8 , 10'd4 , 10'd2 , 10'd1 ,10'd0 }; */ + + reg [9:0]rel_seq_511[511:0] = + {10'd511, 10'd510, 10'd509, 10'd507, 10'd503, 10'd495, 10'd508, 10'd479, 10'd506, 10'd505, 10'd447, 10'd501, 10'd494, + 10'd502, 10'd499, 10'd493, 10'd383, 10'd478, 10'd491, 10'd477, 10'd255, 10'd504, 10'd487, 10'd475, 10'd446, 10'd500, + 10'd471, 10'd445, 10'd498, 10'd382, 10'd443, 10'd492, 10'd497, 10'd381, 10'd463, 10'd490, 10'd439, 10'd476, 10'd486, + 10'd489, 10'd431, 10'd379, 10'd254, 10'd474, 10'd473, 10'd485, 10'd415, 10'd483, 10'd470, 10'd444, 10'd375, 10'd253, + 10'd367, 10'd247, 10'd469, 10'd441, 10'd442, 10'd462, 10'd251, 10'd438, 10'd467, 10'd351, 10'd496, 10'd461, 10'd380, + 10'd437, 10'd459, 10'd378, 10'd239, 10'd488, 10'd430, 10'd484, 10'd319, 10'd435, 10'd377, 10'd455, 10'd472, 10'd223, + 10'd414, 10'd427, 10'd482, 10'd373, 10'd252, 10'd429, 10'd468, 10'd366, 10'd413, 10'd481, 10'd371, 10'd250, 10'd466, + 10'd423, 10'd374, 10'd440, 10'd365, 10'd411, 10'd249, 10'd460, 10'd350, 10'd246, 10'd465, 10'd436, 10'd407, 10'd191, + 10'd127, 10'd363, 10'd458, 10'd245, 10'd349, 10'd434, 10'd399, 10'd457, 10'd359, 10'd238, 10'd428, 10'd376, 10'd318, + 10'd454, 10'd243, 10'd347, 10'd433, 10'd237, 10'd453, 10'd426, 10'd222, 10'd317, 10'd372, 10'd343, 10'd412, 10'd235, + 10'd451, 10'd425, 10'd422, 10'd370, 10'd221, 10'd315, 10'd480, 10'd335, 10'd364, 10'd190, 10'd369, 10'd248, 10'd231, + 10'd410, 10'd421, 10'd311, 10'd219, 10'd409, 10'd362, 10'd464, 10'd406, 10'd419, 10'd348, 10'd215, 10'd361, 10'd189, + 10'd244, 10'd303, 10'd405, 10'd358, 10'd456, 10'd346, 10'd398, 10'd242, 10'd126, 10'd236, 10'd187, 10'd357, 10'd432, + 10'd207, 10'd403, 10'd397, 10'd452, 10'd345, 10'd241, 10'd316, 10'd342, 10'd125, 10'd234, 10'd183, 10'd287, 10'd355, + 10'd395, 10'd424, 10'd314, 10'd220, 10'd341, 10'd123, 10'd175, 10'd233, 10'd334, 10'd450, 10'd313, 10'd391, 10'd230, + 10'd368, 10'd218, 10'd339, 10'd119, 10'd333, 10'd310, 10'd420, 10'd159, 10'd229, 10'd408, 10'd217, 10'd449, 10'd188, + 10'd309, 10'd214, 10'd331, 10'd111, 10'd360, 10'd302, 10'd418, 10'd227, 10'd404, 10'd186, 10'd213, 10'd417, 10'd301, + 10'd307, 10'd356, 10'd402, 10'd327, 10'd95, 10'd206, 10'd240, 10'd344, 10'd396, 10'd185, 10'd401, 10'd211, 10'd354, + 10'd299, 10'd286, 10'd182, 10'd205, 10'd124, 10'd232, 10'd285, 10'd295, 10'd181, 10'd394, 10'd340, 10'd63, 10'd203, + 10'd353, 10'd448, 10'd122, 10'd283, 10'd393, 10'd174, 10'd390, 10'd312, 10'd338, 10'd228, 10'd179, 10'd199, 10'd121, + 10'd173, 10'd389, 10'd332, 10'd118, 10'd337, 10'd158, 10'd279, 10'd271, 10'd416, 10'd216, 10'd308, 10'd387, 10'd226, + 10'd330, 10'd171, 10'd212, 10'd117, 10'd110, 10'd329, 10'd157, 10'd306, 10'd326, 10'd225, 10'd167, 10'd115, 10'd184, + 10'd109, 10'd300, 10'd305, 10'd210, 10'd155, 10'd325, 10'd352, 10'd400, 10'd298, 10'd204, 10'd94, 10'd284, 10'd209, + 10'd151, 10'd180, 10'd107, 10'd297, 10'd392, 10'd323, 10'd202, 10'd93, 10'd294, 10'd178, 10'd103, 10'd143, 10'd282, + 10'd62, 10'd336, 10'd201, 10'd120, 10'd172, 10'd198, 10'd91, 10'd388, 10'd293, 10'd177, 10'd278, 10'd281, 10'd61, + 10'd170, 10'd116, 10'd197, 10'd87, 10'd156, 10'd277, 10'd114, 10'd169, 10'd59, 10'd291, 10'd275, 10'd270, 10'd195, + 10'd166, 10'd224, 10'd108, 10'd269, 10'd79, 10'd154, 10'd113, 10'd328, 10'd55, 10'd106, 10'd165, 10'd153, 10'd150, + 10'd386, 10'd208, 10'd324, 10'd385, 10'd267, 10'd47, 10'd92, 10'd163, 10'd296, 10'd304, 10'd105, 10'd102, 10'd149, + 10'd263, 10'd322, 10'd292, 10'd90, 10'd200, 10'd31, 10'd321, 10'd142, 10'd176, 10'd147, 10'd101, 10'd141, 10'd196, + 10'd290, 10'd89, 10'd280, 10'd60, 10'd86, 10'd99, 10'd139, 10'd168, 10'd58, 10'd276, 10'd85, 10'd194, 10'd289, + 10'd78, 10'd135, 10'd112, 10'd57, 10'd83, 10'd54, 10'd274, 10'd268, 10'd164, 10'd77, 10'd152, 10'd193, 10'd53, + 10'd162, 10'd104, 10'd273, 10'd266, 10'd75, 10'd46, 10'd148, 10'd51, 10'd100, 10'd45, 10'd161, 10'd265, 10'd262, + 10'd71, 10'd146, 10'd30, 10'd140, 10'd88, 10'd98, 10'd43, 10'd29, 10'd261, 10'd145, 10'd138, 10'd84, 10'd259, 10'd39, + 10'd97, 10'd27, 10'd56, 10'd82, 10'd137, 10'd76, 10'd384, 10'd134, 10'd23, 10'd52, 10'd133, 10'd320, 10'd15, 10'd73, + 10'd50, 10'd81, 10'd131, 10'd44, 10'd70, 10'd192, 10'd288, 10'd160, 10'd272, 10'd74, 10'd49, 10'd42, 10'd69, 10'd28, + 10'd144, 10'd41, 10'd67, 10'd96, 10'd38, 10'd264, 10'd260, 10'd136, 10'd22, 10'd25, 10'd37, 10'd80, 10'd26, 10'd258, + 10'd35, 10'd132, 10'd21, 10'd257, 10'd72, 10'd14, 10'd48, 10'd13, 10'd19, 10'd130, 10'd68, 10'd40, 10'd11, 10'd66, + 10'd129, 10'd7, 10'd36, 10'd24, 10'd34, 10'd256, 10'd20, 10'd65, 10'd33, 10'd12, 10'd128, 10'd18, 10'd10, 10'd17, + 10'd6, 10'd9, 10'd64, 10'd5, 10'd3, 10'd32, 10'd16, 10'd8, 10'd4, 10'd2, 10'd1, 10'd0} ; + + reg [9:0]rel_seq_256[255:0] = + {10'd255, 10'd254, 10'd253, 10'd247, 10'd251, 10'd239, 10'd223, 10'd252, 10'd250, 10'd249, 10'd246, 10'd191, 10'd127, + 10'd245, 10'd238, 10'd243, 10'd237, 10'd222, 10'd235, 10'd221, 10'd190, 10'd248, 10'd231, 10'd219, 10'd215, 10'd189, + 10'd244, 10'd242, 10'd126, 10'd236, 10'd187, 10'd207, 10'd241, 10'd125, 10'd234, 10'd183, 10'd220, 10'd123, 10'd175, + 10'd233, 10'd230, 10'd218, 10'd119, 10'd159, 10'd229, 10'd217, 10'd188, 10'd214, 10'd111, 10'd227, 10'd186, 10'd213, + 10'd95, 10'd206, 10'd240, 10'd185, 10'd211, 10'd182, 10'd205, 10'd124, 10'd232, 10'd181, 10'd63, 10'd203, 10'd122, + 10'd174, 10'd228, 10'd179, 10'd199, 10'd121, 10'd173, 10'd118, 10'd158, 10'd216, 10'd226, 10'd171, 10'd212, 10'd117, + 10'd110, 10'd157, 10'd225, 10'd167, 10'd115, 10'd184, 10'd109, 10'd210, 10'd155, 10'd204, 10'd94, 10'd209, 10'd151, + 10'd180, 10'd107, 10'd202, 10'd93, 10'd178, 10'd103, 10'd143, 10'd62, 10'd201, 10'd120, 10'd172, 10'd198, 10'd91, + 10'd177, 10'd61, 10'd170, 10'd116, 10'd197, 10'd87, 10'd156, 10'd114, 10'd169, 10'd59, 10'd195, 10'd166, 10'd224, + 10'd108, 10'd79, 10'd154, 10'd113, 10'd55, 10'd106, 10'd165, 10'd153, 10'd150, 10'd208, 10'd47, 10'd92, 10'd163, + 10'd105, 10'd102, 10'd149, 10'd90, 10'd200, 10'd31, 10'd142, 10'd176, 10'd147, 10'd101, 10'd141, 10'd196, 10'd89, + 10'd60, 10'd86, 10'd99, 10'd139, 10'd168, 10'd58, 10'd85, 10'd194, 10'd78, 10'd135, 10'd112, 10'd57, 10'd83, 10'd54, + 10'd164, 10'd77, 10'd152, 10'd193, 10'd53, 10'd162, 10'd104, 10'd75, 10'd46, 10'd148, 10'd51, 10'd100, 10'd45, 10'd161, + 10'd71, 10'd146, 10'd30, 10'd140, 10'd88, 10'd98, 10'd43, 10'd29, 10'd145, 10'd138, 10'd84, 10'd39, 10'd97, 10'd27, + 10'd56, 10'd82, 10'd137, 10'd76, 10'd134, 10'd23, 10'd52, 10'd133, 10'd15, 10'd73, 10'd50, 10'd81, 10'd131, 10'd44, + 10'd70, 10'd192, 10'd160, 10'd74, 10'd49, 10'd42, 10'd69, 10'd28, 10'd144, 10'd41, 10'd67, 10'd96, 10'd38, 10'd136, + 10'd22, 10'd25, 10'd37, 10'd80, 10'd26, 10'd35, 10'd132, 10'd21, 10'd72, 10'd14, 10'd48, 10'd13, 10'd19, 10'd130, + 10'd68, 10'd40, 10'd11, 10'd66, 10'd129, 10'd7, 10'd36, 10'd24, 10'd34, 10'd20, 10'd65, 10'd33, 10'd12, 10'd128, + 10'd18, 10'd10, 10'd17, 10'd6, 10'd9, 10'd64, 10'd5, 10'd3, 10'd32, 10'd16, 10'd8, 10'd4, 10'd2, 10'd1, 10'd0}; + + reg [9:0]rel_seq_128[127:0] = + {10'd127, 10'd126, 10'd125, 10'd123, 10'd119, 10'd111, 10'd95, 10'd124, 10'd63, 10'd122, 10'd121, 10'd118, 10'd117, 10'd110, + 10'd115, 10'd109, 10'd94, 10'd107, 10'd93, 10'd103, 10'd62, 10'd120, 10'd91, 10'd61, 10'd116, 10'd87, 10'd114, 10'd59, 10'd108, + 10'd79, 10'd113, 10'd55, 10'd106, 10'd47, 10'd92, 10'd105, 10'd102, 10'd90, 10'd31, 10'd101, 10'd89, 10'd60, 10'd86, 10'd99, + 10'd58, 10'd85, 10'd78, 10'd112, 10'd57, 10'd83, 10'd54, 10'd77, 10'd53, 10'd104, 10'd75, 10'd46, 10'd51, 10'd100, 10'd45, + 10'd71, 10'd30, 10'd88, 10'd98, 10'd43, 10'd29, 10'd84, 10'd39, 10'd97, 10'd27, 10'd56, 10'd82, 10'd76, 10'd23, 10'd52, 10'd15, + 10'd73, 10'd50, 10'd81, 10'd44, 10'd70, 10'd74, 10'd49, 10'd42, 10'd69, 10'd28, 10'd41, 10'd67, 10'd96, 10'd38, 10'd22, 10'd25, + 10'd37, 10'd80, 10'd26, 10'd35, 10'd21, 10'd72, 10'd14, 10'd48, 10'd13, 10'd19, 10'd68, 10'd40, 10'd11, 10'd66, 10'd7, 10'd36, + 10'd24, 10'd34, 10'd20, 10'd65, 10'd33, 10'd12, 10'd18, 10'd10, 10'd17, 10'd6, 10'd9, 10'd64, 10'd5, 10'd3, 10'd32, 10'd16, + 10'd8, 10'd4, 10'd2, 10'd1, 10'd0}; + + reg [9:0]rel_seq_64[63:0] = + {10'd63, 10'd62, 10'd61, 10'd59, 10'd55, 10'd47, 10'd31, 10'd60, 10'd58, 10'd57, 10'd54, 10'd53, 10'd46, 10'd51, 10'd45, 10'd30, + 10'd43, 10'd29, 10'd39, 10'd27, 10'd56, 10'd23, 10'd52, 10'd15, 10'd50, 10'd44, 10'd49, 10'd42, 10'd28, 10'd41, 10'd38, 10'd22, + 10'd25, 10'd37, 10'd26, 10'd35, 10'd21, 10'd14, 10'd48, 10'd13, 10'd19, 10'd40, 10'd11, 10'd7, 10'd36, 10'd24, 10'd34, 10'd20, 10'd33, + 10'd12, 10'd18, 10'd10, 10'd17, 10'd6, 10'd9, 10'd5, 10'd3, 10'd32, 10'd16, 10'd8, 10'd4, 10'd2, 10'd1, 10'd0}; + + reg [9:0]rel_seq_32[31:0] = + {10'd31, 10'd30, 10'd29, 10'd27, 10'd23, 10'd15, 10'd28, 10'd22, 10'd25, 10'd26, 10'd21, 10'd14, 10'd13, 10'd19, 10'd11, 10'd7, 10'd24, + 10'd20, 10'd12, 10'd18, 10'd10, 10'd17, 10'd6, 10'd9, 10'd5, 10'd3, 10'd16, 10'd8, 10'd4, 10'd2, 10'd1, 10'd0}; + + // instantiatig a register(group of FF's) to hold the output and synchronize the module w.r.t clock and reset signals + register #( + .WIDTH('d10), // overriding the width of register with the length of output to be registered + .SR(2'b00), // overriding SR inputs of the register + .RST_VAL({10{1'b0}}) // overriding the reset value with expected value in the output when reset is applied + ) REG1 ( + .clk(clock_i), // connecting clock ports + .rstb(reset_ni), // connecting reset ports + .din(pc_pos1_1), // connecting input of register with the value that needs to be registered + .dout(pc_pos1_o) // connecting the registered output with the output port of current module + ); + + // instantiatig a register(group of FF's) to hold the output and synchronize the module w.r.t clock and reset signals + register #( + .WIDTH('d10), // overriding the width of register with the length of output to be registered + .SR(2'b00), // overriding SR inputs of the register + .RST_VAL({10{1'b0}}) // overriding the reset value with expected value in the output when reset is applied + ) REG2 ( + .clk(clock_i), // connecting clock ports + .rstb(reset_ni), // connecting reset ports + .din(pc_pos2_1), // connecting input of register with the value that needs to be registered + .dout(pc_pos2_o) // connecting the registered output with the output port of current module + ); + + // instantiatig a register(group of FF's) to hold the output and synchronize the module w.r.t clock and reset signals + register #( + .WIDTH('d10), // overriding the width of register with the length of output to be registered + .SR(2'b00), // overriding SR inputs of the register + .RST_VAL({10{1'b0}}) // overriding the reset value with expected value in the output when reset is applied + ) REG3 ( + .clk(clock_i), // connecting clock ports + .rstb(reset_ni), // connecting reset ports + .din(pc_pos3_1), // connecting input of register with the value that needs to be registered + .dout(pc_pos3_o) // connecting the registered output with the output port of current module + ); + + // instantiatig a register(group of FF's) to hold the output and synchronize the module w.r.t clock and reset signals + register #( + .WIDTH(N), // overriding the width of register with the length of output to be registered + .SR(2'b00), // overriding SR inputs of the register + .RST_VAL({N{1'b0}}) // overriding the reset value with expected value in the output when reset is applied + ) REG4 ( + .clk(clock_i), // connecting clock ports + .rstb(reset_ni), // connecting reset ports + .din(msg_1), // connecting input of register with the value that needs to be registered + .dout(msg_o) // connecting the registered output with the output port of current module + ); + ////// on 03032021.////////////// + //// copy input msg to a reg. + // decalare a output reg for all combinations + +always @(N_in )//or K_in) //// enables of rel_seq are (rel_seq_512,rel_seq_256,rel_seq_128,rel_seq_64,rel_seq_32) + begin + case (N_in) + 10'd32 : begin rel_seq_enable = 5'b00001; end + 10'd64 : begin rel_seq_enable = 5'b00010; end + 10'd128 : begin rel_seq_enable = 5'b00100; end + 10'd256 : begin rel_seq_enable = 5'b01000; end + 10'd512 : begin rel_seq_enable = 5'b10000; end + endcase + end + +assign rel_seq_en = |rel_seq_enable; +always @ (posedge clock_i) +begin + if (!reset_ni) + begin + rel_seq_en_dly <= 1'b0; + index_out32_dly <= 10'd0; + end + else + begin + rel_seq_en_dly <= rel_seq_en; + rel_seq_en_dly1 <= rel_seq_en_dly; + //rel_seq_en_dly1 <= indx_K ? rel_seq_en_dly: 1'b0; + index_out32_dly <= index_out32; + end +end + +//assign rel_seq_en_dly2 : indx_K ? rel_seq_en_dly: 1'b0; + +rel_seq_cntr addrss (.clk(clock_i),.rst_n(reset_ni),.En(rel_seq_en_dly),.N_val(N_in),.K_val(K_in),.adr_out(addrs_cntr)); +///// rel_seq mem's +relt_seq_32 rel_32 ( .en_32(rel_seq_enable[0]), .out_32(index_out32), .adr_32 (addrs_cntr)); +relt_seq_64 rel_64 ( .en_64(rel_seq_enable[1]), .out_64(index_out64), .adr_64 (addrs_cntr)); +relt_seq_128 rel_128 ( .en_128(rel_seq_enable[2]), .out_128(index_out128), .adr_128 (addrs_cntr)); +relt_seq_256 rel_256 ( .en_256(rel_seq_enable[3]), .out_256(index_out256), .adr_256 (addrs_cntr)); +relt_seq_512 rel_512 ( .en_512(rel_seq_enable[4]), .out_512(index_out512), .adr_512 (addrs_cntr)); + +counter_K counterK (.Clk(clock_i),.Load(rel_seq_en_dly1),.Kin(K_in),.Q(indx_K)); +always @ (negedge clock_i) +begin + if (rel_seq_en_dly1) +//msg_1_out[index_out32] = msg_i[K-1-x]; +//msg_1[frz_pos[q]] = msg_i[K-1-x]; + msg_1_out[index_out32_dly] = msg_i[indx_K]; + else + msg_1_out = 511'd0; +end + + + +// always_comb begin +/* begin : child_rel_seq + //k = 'd0; + // for(p = 0; p < 1024; p = p+1) + for(p = 0; p < 512; p = p+1) + if((rel_seq_511[p]) < N) begin + frz_pos[k] = rel_seq_511[p]; // child reliability sequence for given N < 1024 + k ++; + if(k >= N) // resetting the variable to 0, after it equals to given N value + k = 'd0; + end + end : child_rel_seq*/ + +/* begin : insert_frz_zeroes + for(q = 0; q < N; q = q+1) begin + if(q >= (N-K)) begin : insert_msg_crc + msg_1[frz_pos[q]] = msg_i[K-1-x]; // filling remaining most reliable K positions with information+CRC bits + x ++; + if(x >= K) + x = 'd0; + *//*begin : find_pc_pos + x = 'd0; // resetting the variable to 0, after it equals to given K value + pc_pos1_1 = frz_pos[N-K-1]; // finding the first parity check bit position + pc_pos2_1 = frz_pos[N-K-2]; // finding the second parity check bit position + pc_pos3_1 = frz_pos[N-K-3]; // finding the third parity check bit position + end : find_pc_pos *//* + end : insert_msg_crc // N - K bits need to be frozen *//* + else begin + msg_1[frz_pos[q]] = 1'b0; // filling the least reliable frozen positions with 0's + end + end + end : insert_frz_zeroes + + end*/ + +endmodule + + +// register is written to synchronize a combiational logic w.r.t clock and reset signals +module register #( + parameter int WIDTH = 1, // width of the input and output of the register + parameter logic [1:0] SR = 2'b00, // SET and RESET inputs of the register + parameter logic [WIDTH-1:0] RST_VAL = {WIDTH{1'b0}} // reset value to be provided at the output when reset signal is active +) ( + input logic clk, // clock signal for register + input logic rstb, // active low, synchronous reset + input logic [WIDTH-1:0] din, // input to be registered + output logic [WIDTH-1:0] dout // registered outputs +); + + generate + if(SR==2'b00) begin : NON_RESET_FLOP // if SR==00, irrespective of other signals the input needs to be registered + always_ff @ (posedge clk) begin + dout <= din; // registering input w.r.t posedge of clock signal + end + end : NON_RESET_FLOP + else begin: RESET_FLOP // if SR!==00, input needs to be registered according to other signals w.r.t posedge of clock signal + always_ff @ (posedge clk ) begin + if (~rstb) // if reset is active + if (SR == 2'b01) + dout <= {WIDTH{1'b0}}; // if SR==01, reset the output + else if (SR == 2'b10) + dout <= {WIDTH{1'b1}}; // if SR==10, set the output + else + dout <= RST_VAL; // if SR==11, reset the output according the reset value provided + else + dout <= din; // if reset is inactive, register the input + end + end: RESET_FLOP + endgenerate + +endmodule + +/*always @ (posedge clk) +begin + if (!rst_n) + tmp <= 0; + else if (!En) + tmp <= start_val; + else if (tmp < N_val) + tmp <= tmp + 1; + else + tmp <= tmp; +end +assign adr_out = tmp; +endmodule */ + +module counter_K (Clk, Load,Kin, Q); +input Clk, Load; +input [8:0]Kin; +output [8:0] Q; +reg [8:0] tmp; + + always @(posedge Clk) + begin + if (!Load || (tmp == 0)) // added by amit + //if (!Load) // trueone. + tmp = Kin -1; + else //if (tmp < 1'b1) + tmp = tmp - 1'b1; + // else + // tmp = tmp; + end + assign Q = tmp; +endmodule diff --git a/sources_1/new/Relbty_seq32.v b/sources_1/new/Relbty_seq32.v new file mode 100644 index 0000000..09eb41e --- /dev/null +++ b/sources_1/new/Relbty_seq32.v @@ -0,0 +1,75 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: +// +// Create Date: 02.03.2021 12:56:39 +// Design Name: +// Module Name: Relbty_seq32 +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module relt_seq_32 ( +input wire en_32, +output reg [9:0] out_32, +input wire [9:0] adr_32); // address- 8 deep memory +// Declare a memory rom of 8 4-bit registers. The indices are 0 to 7: +(* synthesis, rom_block = "ROM_CELL XYZ01" *) reg [9:0] rom[0:31]; +// (* synthesis, logic_block *) reg [3:0] rom [0:7]; +initial begin +rom[0] = 10'd0; +rom[1] = 10'd1; +rom[2] = 10'd2; +rom[3] = 10'd4; +rom[4] = 10'd8; +rom[5] = 10'd16; +rom[6] = 10'd3; +rom[7] = 10'd5; +rom[8] = 10'd9; +rom[9] = 10'd6; +rom[10] = 10'd17; +rom[11] = 10'd10; +rom[12] = 10'd18; +rom[13] = 10'd12; +rom[14] = 10'd20; +rom[15] = 10'd24; +rom[16] = 10'd7; +rom[17] = 10'd11; +rom[18] = 10'd19; +rom[19] = 10'd13; +rom[20] = 10'd14; +rom[21] = 10'd21; +rom[22] = 10'd26; +rom[23] = 10'd25; +rom[24] = 10'd22; +rom[25] = 10'd28; +rom[26] = 10'd15; +rom[27] = 10'd23; +rom[28] = 10'd27; +rom[29] = 10'd29; +rom[30] = 10'd30; +rom[31] = 10'd31; +end +always @ (*) +begin +if (en_32) + //assign out_32 = rom[adr_32]; + out_32 = rom[adr_32]; +else + out_32 = 32'd0; +end +endmodule +/*10'd31, 10'd30, 10'd29, 10'd27, 10'd23, 10'd15, 10'd28, 10'd22, 10'd25, 10'd26, 10'd21, 10'd14, 10'd13, +10'd19, 10'd11, 10'd7, 10'd24, 10'd20, 10'd12, 10'd18, 10'd10, 10'd17, 10'd6, 10'd9, 10'd5, 10'd3, 10'd16, 10'd8, 10'd4, 10'd2, 10'd1, 10'd0} */ +//endmodule diff --git a/sources_1/new/lenght_match2out.v b/sources_1/new/lenght_match2out.v new file mode 100644 index 0000000..df12431 --- /dev/null +++ b/sources_1/new/lenght_match2out.v @@ -0,0 +1,62 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: +// +// Create Date: 01.03.2021 16:56:29 +// Design Name: +// Module Name: lenght_match2out +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module lenght_match2out(K_bits,N_val,out_data); +input [511:0]K_bits; +input [9:0]N_val; +output reg [511:0]out_data; + +always @ (*) +begin + case (N_val) + 10'd32: out_data = {{479{1'b0}},K_bits[31:0]}; + 10'd64: out_data = {{447{1'b0}},K_bits[63:0]}; + 10'd128: out_data = {{383{1'b0}},K_bits[127:0]}; + 10'd256: out_data = {{347{1'b0}},K_bits[163:0]}; + 10'd512: out_data = {{347{1'b0}},K_bits[163:0]}; + + default: out_data = {{479{1'b0}},K_bits[31:0]}; + endcase +end +endmodule + +/* always @(Data_in_0 or sel_mx) + begin + case (sel_mx) + 4'b0000 : Data_out = Data_in_0; + 4'b0001 : Data_out = Data_in_1; + 4'b0010 : Data_out = Data_in_2; + 4'b0011 : Data_out = Data_in_3; + 4'b0100 : Data_out = Data_in_4; + 4'b0101 : Data_out = Data_in_5; + 4'b0110 : Data_out = Data_in_6; + 4'b0111 : Data_out = Data_in_7; + 4'b1000 : Data_out = Data_in_8; + 4'b1001 : Data_out = Data_in_9; + 4'b1010 : Data_out = Data_in_10; + 4'b1011 : Data_out = Data_in_11; + 4'b1100 : Data_out = Data_in_12; + 4'b1101 : Data_out = Data_in_13; + 4'b1110 : Data_out = Data_in_14; + 4'b1111 : Data_out = Data_in_15; + endcase + end*/ \ No newline at end of file diff --git a/sources_1/new/rel_seq_cntr.v b/sources_1/new/rel_seq_cntr.v new file mode 100644 index 0000000..3750fd6 --- /dev/null +++ b/sources_1/new/rel_seq_cntr.v @@ -0,0 +1,45 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: +// +// Create Date: 03.03.2021 11:08:20 +// Design Name: +// Module Name: rel_seq_cntr +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module rel_seq_cntr(clk,rst_n,En, N_val,K_val,adr_out); +input clk,rst_n,En; +input [9:0]N_val; +input [8:0]K_val; +output [9:0]adr_out; + +wire [9:0]start_val; +reg [9:0]tmp; + +assign start_val = N_val - K_val; +always @ (posedge clk) +begin + if (!rst_n) + tmp <= 0; + else if (!En) + tmp <= start_val; + else if (tmp < N_val) + tmp <= tmp + 1; + else + tmp <= tmp; +end +assign adr_out = tmp; +endmodule \ No newline at end of file diff --git a/sources_1/new/relt_seq_128.v b/sources_1/new/relt_seq_128.v new file mode 100644 index 0000000..19a7e2c --- /dev/null +++ b/sources_1/new/relt_seq_128.v @@ -0,0 +1,172 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: +// +// Create Date: 02.03.2021 16:07:52 +// Design Name: +// Module Name: relt_seq_128 +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module relt_seq_128( +input wire en_128, +output reg [9:0] out_128, +input wire [9:0] adr_128); // address- 8 deep memory +// Declare a memory rom of 8 4-bit registers. The indices are 0 to 7: +(* synthesis, rom_block = "ROM_CELL XYZ01" *) reg [9:0] rom[0:127]; +// (* synthesis, logic_block *) reg [3:0] rom [0:7]; +initial begin +rom[127] = 10'd127; +rom[126] = 10'd126; +rom[125] = 10'd125; +rom[124] = 10'd123; +rom[123] = 10'd119; +rom[122] = 10'd111; +rom[121] = 10'd95; +rom[120] = 10'd124; +rom[119] = 10'd63; +rom[118] = 10'd122; +rom[117] = 10'd121; +rom[116] = 10'd118; +rom[115] = 10'd117; +rom[114] = 10'd110; +rom[113] = 10'd115; +rom[112] = 10'd109; +rom[111] = 10'd94; +rom[110] = 10'd107; +rom[109] = 10'd93; +rom[108] = 10'd103; +rom[107] = 10'd62; +rom[106] = 10'd120; +rom[105] = 10'd91; +rom[104] = 10'd61; +rom[103] = 10'd116; +rom[102] = 10'd87; +rom[101] = 10'd114; +rom[100] = 10'd59; +rom[99] = 10'd108; +rom[98] = 10'd79; +rom[97] = 10'd113; +rom[96] = 10'd55; +rom[95] = 10'd106; +rom[94] = 10'd47; +rom[93] = 10'd92; +rom[92] = 10'd105; +rom[91] = 10'd102; +rom[90] = 10'd90; +rom[89] = 10'd31; +rom[88] = 10'd101; +rom[87] = 10'd89; +rom[86] = 10'd60; +rom[85] = 10'd86; +rom[84] = 10'd99; +rom[83] = 10'd58; +rom[82] = 10'd85; +rom[81] = 10'd78; +rom[80] = 10'd112; +rom[79] = 10'd57; +rom[78] = 10'd83; +rom[77] = 10'd54; +rom[76] = 10'd77; +rom[75] = 10'd53; +rom[74] = 10'd104; +rom[73] = 10'd75; +rom[72] = 10'd46; +rom[71] = 10'd51; +rom[70] = 10'd100; +rom[69] = 10'd45; +rom[68] = 10'd71; +rom[67] = 10'd30; +rom[66] = 10'd88; +rom[65] = 10'd98; +rom[64] = 10'd43; +rom[63] = 10'd29; +rom[62] = 10'd84; +rom[61] = 10'd39; +rom[60] = 10'd97; +rom[59] = 10'd27; +rom[58] = 10'd56; +rom[57] = 10'd82; +rom[56] = 10'd76; +rom[55] = 10'd23; +rom[54] = 10'd52; +rom[53] = 10'd15; +rom[52] = 10'd73; +rom[51] = 10'd50; +rom[50] = 10'd81; +rom[49] = 10'd44; +rom[48] = 10'd70; +rom[47] = 10'd74; +rom[46] = 10'd49; +rom[45] = 10'd42; +rom[44] = 10'd69; +rom[43] = 10'd28; +rom[42] = 10'd41; +rom[41] = 10'd67; +rom[40] = 10'd96; +rom[39] = 10'd38; +rom[38] = 10'd22; +rom[37] = 10'd25; +rom[36] = 10'd37; +rom[35] = 10'd80; +rom[34] = 10'd26; +rom[33] = 10'd35; +rom[32] = 10'd21; +rom[31] = 10'd72; +rom[30] = 10'd14; +rom[29] = 10'd48; +rom[28] = 10'd13; +rom[27] = 10'd19; +rom[26] = 10'd68; +rom[25] = 10'd40; +rom[24] = 10'd11; +rom[23] = 10'd66; +rom[22] = 10'd7; +rom[21] = 10'd36; +rom[20] = 10'd24; +rom[19] = 10'd34; +rom[18] = 10'd20; +rom[17] = 10'd65; +rom[16] = 10'd33; +rom[15] = 10'd12; +rom[14] = 10'd18; +rom[13] = 10'd10; +rom[12] = 10'd17; +rom[11] = 10'd6; +rom[10] = 10'd9; +rom[9] = 10'd64; +rom[8] = 10'd5; +rom[7] = 10'd3; +rom[6] = 10'd32; +rom[5] = 10'd16; +rom[4] = 10'd8; +rom[3] = 10'd4; +rom[2] = 10'd2; +rom[1] = 10'd1; +rom[0] = 10'd0; +end +//assign out_128 = rom[a= dr_128]; +always @ (*) +begin +if (en_128) + //assign out_32 = rom[adr_32]; + out_128 = rom[adr_128]; +else + out_128 = 128'd0; +end +endmodule + + + diff --git a/sources_1/new/relt_seq_256.v b/sources_1/new/relt_seq_256.v new file mode 100644 index 0000000..8f9e8ed --- /dev/null +++ b/sources_1/new/relt_seq_256.v @@ -0,0 +1,297 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: +// +// Create Date: 02.03.2021 17:16:08 +// Design Name: +// Module Name: relt_seq_256 +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module relt_seq_256( +input wire en_256, +output reg [9:0] out_256, +input wire [9:0] adr_256); // address- 8 deep memory +// Declare a memory rom of 8 4-bit registers. The indices are 0 to 7: +(* synthesis, rom_block = "ROM_CELL XYZ01" *) reg [9:0] rom[0:255]; +// (* synthesis, logic_block *) reg [3:0] rom [0:7]; +initial begin +rom[255] = 10'd255; +rom[254] = 10'd254; +rom[253] = 10'd253; +rom[252] = 10'd247; +rom[251] = 10'd251; +rom[250] = 10'd239; +rom[249] = 10'd223; +rom[248] = 10'd252; +rom[247] = 10'd250; +rom[246] = 10'd249; +rom[245] = 10'd246; +rom[244] = 10'd191; +rom[243] = 10'd127; +rom[242] = 10'd245; +rom[241] = 10'd238; +rom[240] = 10'd243; +rom[239] = 10'd237; +rom[238] = 10'd222; +rom[237] = 10'd235; +rom[236] = 10'd221; +rom[235] = 10'd190; +rom[234] = 10'd248; +rom[233] = 10'd231; +rom[232] = 10'd219; +rom[231] = 10'd215; +rom[230] = 10'd189; +rom[229] = 10'd244; +rom[228] = 10'd242; +rom[227] = 10'd126; +rom[226] = 10'd236; +rom[225] = 10'd187; +rom[224] = 10'd207; +rom[223] = 10'd241; +rom[222] = 10'd125; +rom[221] = 10'd234; +rom[220] = 10'd183; +rom[219] = 10'd220; +rom[218] = 10'd123; +rom[217] = 10'd175; +rom[216] = 10'd233; +rom[215] = 10'd230; +rom[214] = 10'd218; +rom[213] = 10'd119; +rom[212] = 10'd159; +rom[211] = 10'd229; +rom[210] = 10'd217; +rom[209] = 10'd188; +rom[208] = 10'd214; +rom[207] = 10'd111; +rom[206] = 10'd227; +rom[205] = 10'd186; +rom[204] = 10'd213; +rom[203] = 10'd95; +rom[202] = 10'd206; +rom[201] = 10'd240; +rom[200] = 10'd185; +rom[199] = 10'd211; +rom[198] = 10'd182; +rom[197] = 10'd205; +rom[196] = 10'd124; +rom[195] = 10'd232; +rom[194] = 10'd181; +rom[193] = 10'd63; +rom[192] = 10'd203; +rom[191] = 10'd122; +rom[190] = 10'd174; +rom[189] = 10'd228; +rom[188] = 10'd179; +rom[187] = 10'd199; +rom[186] = 10'd121; +rom[185] = 10'd173; +rom[184] = 10'd118; +rom[183] = 10'd158; +rom[182] = 10'd216; +rom[181] = 10'd226; +rom[180] = 10'd171; +rom[179] = 10'd212; +rom[178] = 10'd117; +rom[177] = 10'd110; +rom[176] = 10'd157; +rom[175] = 10'd225; +rom[174] = 10'd167; +rom[173] = 10'd115; +rom[172] = 10'd184; +rom[171] = 10'd109; +rom[170] = 10'd210; +rom[169] = 10'd155; +rom[168] = 10'd204; +rom[167] = 10'd94; +rom[166] = 10'd209; +rom[165] = 10'd151; +rom[164] = 10'd180; +rom[163] = 10'd107; +rom[162] = 10'd202; +rom[161] = 10'd93; +rom[160] = 10'd178; +rom[159] = 10'd103; +rom[158] = 10'd143; +rom[157] = 10'd62; +rom[156] = 10'd201; +rom[155] = 10'd120; +rom[154] = 10'd172; +rom[153] = 10'd198; +rom[152] = 10'd91; +rom[151] = 10'd177; +rom[150] = 10'd61; +rom[149] = 10'd170; +rom[148] = 10'd116; +rom[147] = 10'd197; +rom[146] = 10'd87; +rom[145] = 10'd156; +rom[144] = 10'd114; +rom[143] = 10'd169; +rom[142] = 10'd59; +rom[141] = 10'd195; +rom[140] = 10'd166; +rom[139] = 10'd224; +rom[138] = 10'd108; +rom[137] = 10'd79; +rom[136] = 10'd154; +rom[135] = 10'd113; +rom[134] = 10'd55; +rom[133] = 10'd106; +rom[132] = 10'd165; +rom[131] = 10'd153; +rom[130] = 10'd150; +rom[129] = 10'd208; +rom[128] = 10'd47; +rom[127] = 10'd92; +rom[126] = 10'd163; +rom[125] = 10'd105; +rom[124] = 10'd102; +rom[123] = 10'd149; +rom[122] = 10'd90; +rom[121] = 10'd200; +rom[120] = 10'd31; +rom[119] = 10'd142; +rom[118] = 10'd176; +rom[117] = 10'd147; +rom[116] = 10'd101; +rom[115] = 10'd141; +rom[114] = 10'd196; +rom[113] = 10'd89; +rom[112] = 10'd60; +rom[111] = 10'd86; +rom[110] = 10'd99; +rom[109] = 10'd139; +rom[108] = 10'd168; +rom[107] = 10'd58; +rom[106] = 10'd85; +rom[105] = 10'd194; +rom[104] = 10'd78; +rom[103] = 10'd135; +rom[102] = 10'd112; +rom[101] = 10'd57; +rom[100] = 10'd83; +rom[99] = 10'd54; +rom[98] = 10'd164; +rom[97] = 10'd77; +rom[96] = 10'd152; +rom[95] = 10'd193; +rom[94] = 10'd53; +rom[93] = 10'd162; +rom[92] = 10'd104; +rom[91] = 10'd75; +rom[90] = 10'd46; +rom[89] = 10'd148; +rom[88] = 10'd51; +rom[87] = 10'd100; +rom[86] = 10'd45; +rom[85] = 10'd161; +rom[84] = 10'd71; +rom[83] = 10'd146; +rom[82] = 10'd30; +rom[81] = 10'd140; +rom[80] = 10'd88; +rom[79] = 10'd98; +rom[78] = 10'd43; +rom[77] = 10'd29; +rom[76] = 10'd145; +rom[75] = 10'd138; +rom[74] = 10'd84; +rom[73] = 10'd39; +rom[72] = 10'd97; +rom[71] = 10'd27; +rom[70] = 10'd56; +rom[69] = 10'd82; +rom[68] = 10'd137; +rom[67] = 10'd76; +rom[66] = 10'd134; +rom[65] = 10'd23; +rom[64] = 10'd52; +rom[63] = 10'd133; +rom[62] = 10'd15; +rom[61] = 10'd73; +rom[60] = 10'd50; +rom[59] = 10'd81; +rom[58] = 10'd131; +rom[57] = 10'd44; +rom[56] = 10'd70; +rom[55] = 10'd192; +rom[54] = 10'd160; +rom[53] = 10'd74; +rom[52] = 10'd49; +rom[51] = 10'd42; +rom[50] = 10'd69; +rom[49] = 10'd28; +rom[48] = 10'd144; +rom[47] = 10'd41; +rom[46] = 10'd67; +rom[45] = 10'd96; +rom[44] = 10'd38; +rom[43] = 10'd136; +rom[42] = 10'd22; +rom[41] = 10'd25; +rom[40] = 10'd37; +rom[39] = 10'd80; +rom[38] = 10'd26; +rom[37] = 10'd35; +rom[36] = 10'd132; +rom[35] = 10'd21; +rom[34] = 10'd72; +rom[33] = 10'd14; +rom[32] = 10'd48; +rom[31] = 10'd13; +rom[30] = 10'd19; +rom[29] = 10'd130; +rom[28] = 10'd68; +rom[27] = 10'd40; +rom[26] = 10'd11; +rom[25] = 10'd66; +rom[24] = 10'd129; +rom[23] = 10'd7; +rom[22] = 10'd36; +rom[21] = 10'd24; +rom[20] = 10'd34; +rom[19] = 10'd20; +rom[18] = 10'd65; +rom[17] = 10'd33; +rom[16] = 10'd12; +rom[15] = 10'd128; +rom[14] = 10'd18; +rom[13] = 10'd10; +rom[12] = 10'd17; +rom[11] = 10'd6; +rom[10] = 10'd9; +rom[9] = 10'd64; +rom[8] = 10'd5; +rom[7] = 10'd3; +rom[6] = 10'd32; +rom[5] = 10'd16; +rom[4] = 10'd8; +rom[3] = 10'd4; +rom[2] = 10'd2; +rom[1] = 10'd1; +rom[0] = 10'd0; +end +//assign +always @ (*) +begin +if (en_256) + //assign out_32 = rom[adr_32]; + out_256 = rom[adr_256]; +else + out_256 = 256'd0; +end +endmodule diff --git a/sources_1/new/relt_seq_32.v b/sources_1/new/relt_seq_32.v new file mode 100644 index 0000000..2a515ce --- /dev/null +++ b/sources_1/new/relt_seq_32.v @@ -0,0 +1,26 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: +// +// Create Date: 02.03.2021 15:18:31 +// Design Name: +// Module Name: relt_seq_32 +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module relt_seq_32( + + ); +endmodule diff --git a/sources_1/new/relt_seq_512.v b/sources_1/new/relt_seq_512.v new file mode 100644 index 0000000..b61f42e --- /dev/null +++ b/sources_1/new/relt_seq_512.v @@ -0,0 +1,553 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: +// +// Create Date: 03.03.2021 09:52:53 +// Design Name: +// Module Name: relt_seq_512 +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module relt_seq_512( +input wire en_512, +output reg [9:0] out_512, +input wire [9:0] adr_512); // address- 8 deep memory +// Declare a memory rom of 8 4-bit registers. The indices are 0 to 7: +(* synthesis, rom_block = "ROM_CELL XYZ01" *) reg [9:0] rom[0:511]; +// (* synthesis, logic_block *) reg [3:0] rom [0:7]; +initial begin +rom[511] = 10'd511; +rom[510] = 10'd510; +rom[509] = 10'd509; +rom[508] = 10'd507; +rom[507] = 10'd503; +rom[506] = 10'd495; +rom[505] = 10'd508; +rom[504] = 10'd479; +rom[503] = 10'd506; +rom[502] = 10'd505; +rom[501] = 10'd447; +rom[500] = 10'd501; +rom[499] = 10'd494; +rom[498] = 10'd502; +rom[497] = 10'd499; +rom[496] = 10'd493; +rom[495] = 10'd383; +rom[494] = 10'd478; +rom[493] = 10'd491; +rom[492] = 10'd477; +rom[491] = 10'd255; +rom[490] = 10'd504; +rom[489] = 10'd487; +rom[488] = 10'd475; +rom[487] = 10'd446; +rom[486] = 10'd500; +rom[485] = 10'd471; +rom[484] = 10'd445; +rom[483] = 10'd498; +rom[482] = 10'd382; +rom[481] = 10'd443; +rom[480] = 10'd492; +rom[479] = 10'd497; +rom[478] = 10'd381; +rom[477] = 10'd463; +rom[476] = 10'd490; +rom[475] = 10'd439; +rom[474] = 10'd476; +rom[473] = 10'd486; +rom[472] = 10'd489; +rom[471] = 10'd431; +rom[470] = 10'd379; +rom[469] = 10'd254; +rom[468] = 10'd474; +rom[467] = 10'd473; +rom[466] = 10'd485; +rom[465] = 10'd415; +rom[464] = 10'd483; +rom[463] = 10'd470; +rom[462] = 10'd444; +rom[461] = 10'd375; +rom[460] = 10'd253; +rom[459] = 10'd367; +rom[458] = 10'd247; +rom[457] = 10'd469; +rom[456] = 10'd441; +rom[455] = 10'd442; +rom[454] = 10'd462; +rom[453] = 10'd251; +rom[452] = 10'd438; +rom[451] = 10'd467; +rom[450] = 10'd351; +rom[449] = 10'd496; +rom[448] = 10'd461; +rom[447] = 10'd380; +rom[446] = 10'd437; +rom[445] = 10'd459; +rom[444] = 10'd378; +rom[443] = 10'd239; +rom[442] = 10'd488; +rom[441] = 10'd430; +rom[440] = 10'd484; +rom[439] = 10'd319; +rom[438] = 10'd435; +rom[437] = 10'd377; +rom[436] = 10'd455; +rom[435] = 10'd472; +rom[434] = 10'd223; +rom[433] = 10'd414; +rom[432] = 10'd427; +rom[431] = 10'd482; +rom[430] = 10'd373; +rom[429] = 10'd252; +rom[428] = 10'd429; +rom[427] = 10'd468; +rom[426] = 10'd366; +rom[425] = 10'd413; +rom[424] = 10'd481; +rom[423] = 10'd371; +rom[422] = 10'd250; +rom[421] = 10'd466; +rom[420] = 10'd423; +rom[419] = 10'd374; +rom[418] = 10'd440; +rom[417] = 10'd365; +rom[416] = 10'd411; +rom[415] = 10'd249; +rom[414] = 10'd460; +rom[413] = 10'd350; +rom[412] = 10'd246; +rom[411] = 10'd465; +rom[410] = 10'd436; +rom[409] = 10'd407; +rom[408] = 10'd191; +rom[407] = 10'd127; +rom[406] = 10'd363; +rom[405] = 10'd458; +rom[404] = 10'd245; +rom[403] = 10'd349; +rom[402] = 10'd434; +rom[401] = 10'd399; +rom[400] = 10'd457; +rom[399] = 10'd359; +rom[398] = 10'd238; +rom[397] = 10'd428; +rom[396] = 10'd376; +rom[395] = 10'd318; +rom[394] = 10'd454; +rom[393] = 10'd243; +rom[392] = 10'd347; +rom[391] = 10'd433; +rom[390] = 10'd237; +rom[389] = 10'd453; +rom[388] = 10'd426; +rom[387] = 10'd222; +rom[386] = 10'd317; +rom[385] = 10'd372; +rom[384] = 10'd343; +rom[383] = 10'd412; +rom[382] = 10'd235; +rom[381] = 10'd451; +rom[380] = 10'd425; +rom[379] = 10'd422; +rom[378] = 10'd370; +rom[377] = 10'd221; +rom[376] = 10'd315; +rom[375] = 10'd480; +rom[374] = 10'd335; +rom[373] = 10'd364; +rom[372] = 10'd190; +rom[371] = 10'd369; +rom[370] = 10'd248; +rom[369] = 10'd231; +rom[368] = 10'd410; +rom[367] = 10'd421; +rom[366] = 10'd311; +rom[365] = 10'd219; +rom[364] = 10'd409; +rom[363] = 10'd362; +rom[362] = 10'd464; +rom[361] = 10'd406; +rom[360] = 10'd419; +rom[359] = 10'd348; +rom[358] = 10'd215; +rom[357] = 10'd361; +rom[356] = 10'd189; +rom[355] = 10'd244; +rom[354] = 10'd303; +rom[353] = 10'd405; +rom[352] = 10'd358; +rom[351] = 10'd456; +rom[350] = 10'd346; +rom[349] = 10'd398; +rom[348] = 10'd242; +rom[347] = 10'd126; +rom[346] = 10'd236; +rom[345] = 10'd187; +rom[344] = 10'd357; +rom[343] = 10'd432; +rom[342] = 10'd207; +rom[341] = 10'd403; +rom[340] = 10'd397; +rom[339] = 10'd452; +rom[338] = 10'd345; +rom[337] = 10'd241; +rom[336] = 10'd316; +rom[335] = 10'd342; +rom[334] = 10'd125; +rom[333] = 10'd234; +rom[332] = 10'd183; +rom[331] = 10'd287; +rom[330] = 10'd355; +rom[329] = 10'd395; +rom[328] = 10'd424; +rom[327] = 10'd314; +rom[326] = 10'd220; +rom[325] = 10'd341; +rom[324] = 10'd123; +rom[323] = 10'd175; +rom[322] = 10'd233; +rom[321] = 10'd334; +rom[320] = 10'd450; +rom[319] = 10'd313; +rom[318] = 10'd391; +rom[317] = 10'd230; +rom[316] = 10'd368; +rom[315] = 10'd218; +rom[314] = 10'd339; +rom[313] = 10'd119; +rom[312] = 10'd333; +rom[311] = 10'd310; +rom[310] = 10'd420; +rom[309] = 10'd159; +rom[308] = 10'd229; +rom[307] = 10'd408; +rom[306] = 10'd217; +rom[305] = 10'd449; +rom[304] = 10'd188; +rom[303] = 10'd309; +rom[302] = 10'd214; +rom[301] = 10'd331; +rom[300] = 10'd111; +rom[299] = 10'd360; +rom[298] = 10'd302; +rom[297] = 10'd418; +rom[296] = 10'd227; +rom[295] = 10'd404; +rom[294] = 10'd186; +rom[293] = 10'd213; +rom[292] = 10'd417; +rom[291] = 10'd301; +rom[290] = 10'd307; +rom[289] = 10'd356; +rom[288] = 10'd402; +rom[287] = 10'd327; +rom[286] = 10'd95; +rom[285] = 10'd206; +rom[284] = 10'd240; +rom[283] = 10'd344; +rom[282] = 10'd396; +rom[281] = 10'd185; +rom[280] = 10'd401; +rom[279] = 10'd211; +rom[278] = 10'd354; +rom[277] = 10'd299; +rom[276] = 10'd286; +rom[275] = 10'd182; +rom[274] = 10'd205; +rom[273] = 10'd124; +rom[272] = 10'd232; +rom[271] = 10'd285; +rom[270] = 10'd295; +rom[269] = 10'd181; +rom[268] = 10'd394; +rom[267] = 10'd340; +rom[266] = 10'd63; +rom[265] = 10'd203; +rom[264] = 10'd353; +rom[263] = 10'd448; +rom[262] = 10'd122; +rom[261] = 10'd283; +rom[260] = 10'd393; +rom[259] = 10'd174; +rom[258] = 10'd390; +rom[257] = 10'd312; +rom[256] = 10'd338; +rom[255] = 10'd228; +rom[254] = 10'd179; +rom[253] = 10'd199; +rom[252] = 10'd121; +rom[251] = 10'd173; +rom[250] = 10'd389; +rom[249] = 10'd332; +rom[248] = 10'd118; +rom[247] = 10'd337; +rom[246] = 10'd158; +rom[245] = 10'd279; +rom[244] = 10'd271; +rom[243] = 10'd416; +rom[242] = 10'd216; +rom[241] = 10'd308; +rom[240] = 10'd387; +rom[239] = 10'd226; +rom[238] = 10'd330; +rom[237] = 10'd171; +rom[236] = 10'd212; +rom[235] = 10'd117; +rom[234] = 10'd110; +rom[233] = 10'd329; +rom[232] = 10'd157; +rom[231] = 10'd306; +rom[230] = 10'd326; +rom[229] = 10'd225; +rom[228] = 10'd167; +rom[227] = 10'd115; +rom[226] = 10'd184; +rom[225] = 10'd109; +rom[224] = 10'd300; +rom[223] = 10'd305; +rom[222] = 10'd210; +rom[221] = 10'd155; +rom[220] = 10'd325; +rom[219] = 10'd352; +rom[218] = 10'd400; +rom[217] = 10'd298; +rom[216] = 10'd204; +rom[215] = 10'd94; +rom[214] = 10'd284; +rom[213] = 10'd209; +rom[212] = 10'd151; +rom[211] = 10'd180; +rom[210] = 10'd107; +rom[209] = 10'd297; +rom[208] = 10'd392; +rom[207] = 10'd323; +rom[206] = 10'd202; +rom[205] = 10'd93; +rom[204] = 10'd294; +rom[203] = 10'd178; +rom[202] = 10'd103; +rom[201] = 10'd143; +rom[200] = 10'd282; +rom[199] = 10'd62; +rom[198] = 10'd336; +rom[197] = 10'd201; +rom[196] = 10'd120; +rom[195] = 10'd172; +rom[194] = 10'd198; +rom[193] = 10'd91; +rom[192] = 10'd388; +rom[191] = 10'd293; +rom[190] = 10'd177; +rom[189] = 10'd278; +rom[188] = 10'd281; +rom[187] = 10'd61; +rom[186] = 10'd170; +rom[185] = 10'd116; +rom[184] = 10'd197; +rom[183] = 10'd87; +rom[182] = 10'd156; +rom[181] = 10'd277; +rom[180] = 10'd114; +rom[179] = 10'd169; +rom[178] = 10'd59; +rom[177] = 10'd291; +rom[176] = 10'd275; +rom[175] = 10'd270; +rom[174] = 10'd195; +rom[173] = 10'd166; +rom[172] = 10'd224; +rom[171] = 10'd108; +rom[170] = 10'd269; +rom[169] = 10'd79; +rom[168] = 10'd154; +rom[167] = 10'd113; +rom[166] = 10'd328; +rom[165] = 10'd55; +rom[164] = 10'd106; +rom[163] = 10'd165; +rom[162] = 10'd153; +rom[161] = 10'd150; +rom[160] = 10'd386; +rom[159] = 10'd208; +rom[158] = 10'd324; +rom[157] = 10'd385; +rom[156] = 10'd267; +rom[155] = 10'd47; +rom[154] = 10'd92; +rom[153] = 10'd163; +rom[152] = 10'd296; +rom[151] = 10'd304; +rom[150] = 10'd105; +rom[149] = 10'd102; +rom[148] = 10'd149; +rom[147] = 10'd263; +rom[146] = 10'd322; +rom[145] = 10'd292; +rom[144] = 10'd90; +rom[143] = 10'd200; +rom[142] = 10'd31; +rom[141] = 10'd321; +rom[140] = 10'd142; +rom[139] = 10'd176; +rom[138] = 10'd147; +rom[137] = 10'd101; +rom[136] = 10'd141; +rom[135] = 10'd196; +rom[134] = 10'd290; +rom[133] = 10'd89; +rom[132] = 10'd280; +rom[131] = 10'd60; +rom[130] = 10'd86; +rom[129] = 10'd99; +rom[128] = 10'd139; +rom[127] = 10'd168; +rom[126] = 10'd58; +rom[125] = 10'd276; +rom[124] = 10'd85; +rom[123] = 10'd194; +rom[122] = 10'd289; +rom[121] = 10'd78; +rom[120] = 10'd135; +rom[119] = 10'd112; +rom[118] = 10'd57; +rom[117] = 10'd83; +rom[116] = 10'd54; +rom[115] = 10'd274; +rom[114] = 10'd268; +rom[113] = 10'd164; +rom[112] = 10'd77; +rom[111] = 10'd152; +rom[110] = 10'd193; +rom[109] = 10'd53; +rom[108] = 10'd162; +rom[107] = 10'd104; +rom[106] = 10'd273; +rom[105] = 10'd266; +rom[104] = 10'd75; +rom[103] = 10'd46; +rom[102] = 10'd148; +rom[101] = 10'd51; +rom[100] = 10'd100; +rom[99] = 10'd45; +rom[98] = 10'd161; +rom[97] = 10'd265; +rom[96] = 10'd262; +rom[95] = 10'd71; +rom[94] = 10'd146; +rom[93] = 10'd30; +rom[92] = 10'd140; +rom[91] = 10'd88; +rom[90] = 10'd98; +rom[89] = 10'd43; +rom[88] = 10'd29; +rom[87] = 10'd261; +rom[86] = 10'd145; +rom[85] = 10'd138; +rom[84] = 10'd84; +rom[83] = 10'd259; +rom[82] = 10'd39; +rom[81] = 10'd97; +rom[80] = 10'd27; +rom[79] = 10'd56; +rom[78] = 10'd82; +rom[77] = 10'd137; +rom[76] = 10'd76; +rom[75] = 10'd384; +rom[74] = 10'd134; +rom[73] = 10'd23; +rom[72] = 10'd52; +rom[71] = 10'd133; +rom[70] = 10'd320; +rom[69] = 10'd15; +rom[68] = 10'd73; +rom[67] = 10'd50; +rom[66] = 10'd81; +rom[65] = 10'd131; +rom[64] = 10'd44; +rom[63] = 10'd70; +rom[62] = 10'd192; +rom[61] = 10'd288; +rom[60] = 10'd160; +rom[59] = 10'd272; +rom[58] = 10'd74; +rom[57] = 10'd49; +rom[56] = 10'd42; +rom[55] = 10'd69; +rom[54] = 10'd28; +rom[53] = 10'd144; +rom[52] = 10'd41; +rom[51] = 10'd67; +rom[50] = 10'd96; +rom[49] = 10'd38; +rom[48] = 10'd264; +rom[47] = 10'd260; +rom[46] = 10'd136; +rom[45] = 10'd22; +rom[44] = 10'd25; +rom[43] = 10'd37; +rom[42] = 10'd80; +rom[41] = 10'd26; +rom[40] = 10'd258; +rom[39] = 10'd35; +rom[38] = 10'd132; +rom[37] = 10'd21; +rom[36] = 10'd257; +rom[35] = 10'd72; +rom[34] = 10'd14; +rom[33] = 10'd48; +rom[32] = 10'd13; +rom[31] = 10'd19; +rom[30] = 10'd130; +rom[29] = 10'd68; +rom[28] = 10'd40; +rom[27] = 10'd11; +rom[26] = 10'd66; +rom[25] = 10'd129; +rom[24] = 10'd7; +rom[23] = 10'd36; +rom[22] = 10'd24; +rom[21] = 10'd34; +rom[20] = 10'd256; +rom[19] = 10'd20; +rom[18] = 10'd65; +rom[17] = 10'd33; +rom[16] = 10'd12; +rom[15] = 10'd128; +rom[14] = 10'd18; +rom[13] = 10'd10; +rom[12] = 10'd17; +rom[11] = 10'd6; +rom[10] = 10'd9; +rom[9] = 10'd64; +rom[8] = 10'd5; +rom[7] = 10'd3; +rom[6] = 10'd32; +rom[5] = 10'd16; +rom[4] = 10'd8; +rom[3] = 10'd4; +rom[2] = 10'd2; +rom[1] = 10'd1; +rom[0] = 10'd0; +end + +always @ (*) +begin +if (en_512) + //assign out_32 = rom[adr_32]; + out_512 = rom[adr_512]; +else + out_512 = 512'd0; +end +endmodule \ No newline at end of file diff --git a/sources_1/new/relt_seq_64.v b/sources_1/new/relt_seq_64.v new file mode 100644 index 0000000..a6a09fa --- /dev/null +++ b/sources_1/new/relt_seq_64.v @@ -0,0 +1,111 @@ +`timescale 1ns / 1ps +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: +// +// Create Date: 02.03.2021 15:19:53 +// Design Name: +// Module Name: relt_seq_64 +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + + +module relt_seq_64( +input wire en_64, +output reg [9:0] out_64, +input wire [9:0] adr_64); // address- 8 deep memory +// Declare a memory rom of 8 4-bit registers. The indices are 0 to 7: +(* synthesis, rom_block = "ROM_CELL XYZ01" *) reg [9:0] rom[0:63]; +// (* synthesis, logic_block *) reg [3:0] rom [0:7]; +initial begin +rom[63] = 10'd63; +rom[62] = 10'd62; +rom[61] = 10'd61; +rom[60] = 10'd59; +rom[59] = 10'd55; +rom[58] = 10'd47; +rom[57] = 10'd31; +rom[56] = 10'd60; +rom[55] = 10'd58; +rom[54] = 10'd57; +rom[53] = 10'd54; +rom[52] = 10'd53; +rom[51] = 10'd46; +rom[50] = 10'd51; +rom[49] = 10'd45; +rom[48] = 10'd30; +rom[47] = 10'd43; +rom[46] = 10'd29; +rom[45] = 10'd39; +rom[44] = 10'd27; +rom[43] = 10'd56; +rom[42] = 10'd23; +rom[41] = 10'd52; +rom[40] = 10'd15; +rom[39] = 10'd50; +rom[38] = 10'd44; +rom[37] = 10'd49; +rom[36] = 10'd42; +rom[35] = 10'd28; +rom[34] = 10'd41; +rom[33] = 10'd38; +rom[32] = 10'd22; +rom[31] = 10'd25; +rom[30] = 10'd37; +rom[29] = 10'd26; +rom[28] = 10'd35; +rom[27] = 10'd21; +rom[26] = 10'd14; +rom[25] = 10'd48; +rom[24] = 10'd13; +rom[23] = 10'd19; +rom[22] = 10'd40; +rom[21] = 10'd11; +rom[20] = 10'd7; +rom[19] = 10'd36; +rom[18] = 10'd24; +rom[17] = 10'd34; +rom[16] = 10'd20; +rom[15] = 10'd33; +rom[14] = 10'd12; +rom[13] = 10'd18; +rom[12] = 10'd10; +rom[11] = 10'd17; +rom[10] = 10'd6; +rom[9] = 10'd9; +rom[8] = 10'd5; +rom[7] = 10'd3; +rom[6] = 10'd32; +rom[5] = 10'd16; +rom[4] = 10'd8; +rom[3] = 10'd4; +rom[2] = 10'd2; +rom[1] = 10'd1; +rom[0] = 10'd0; + +end + +always @ (*) +begin +if (en_64) + //assign out_32 = rom[adr_32]; + out_64 = rom[adr_64]; +else + out_64 = 64'd0; +end +endmodule + +/*{10'd63, 10'd62, 10'd61, 10'd59, 10'd55, 10'd47, 10'd31, 10'd60, 10'd58, 10'd57, 10'd54, 10'd53, 10'd46, 10'd51, 10'd45, 10'd30, + 10'd43, 10'd29, 10'd39, 10'd27, 10'd56, 10'd23, 10'd52, 10'd15, 10'd50, 10'd44, 10'd49, 10'd42, 10'd28, 10'd41, 10'd38, 10'd22, + 10'd25, 10'd37, 10'd26, 10'd35, 10'd21, 10'd14, 10'd48, 10'd13, 10'd19, 10'd40, 10'd11, 10'd7, 10'd36, 10'd24, 10'd34, 10'd20, 10'd33, + 10'd12, 10'd18, 10'd10, 10'd17, 10'd6, 10'd9, 10'd5, 10'd3, 10'd32, 10'd16, 10'd8, 10'd4, 10'd2, 10'd1, 10'd0}; */