OpenCores
URL https://opencores.org/ocsvn/iota_pow_vhdl/iota_pow_vhdl/trunk

Subversion Repositories iota_pow_vhdl

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 3 to Rev 4
    Reverse comparison

Rev 3 → Rev 4

/iota_pow_vhdl/trunk/curl.qsf File deleted \ No newline at end of file
/iota_pow_vhdl/trunk/vhdl_altera_de1/curl.qpf
0,0 → 1,30
# -------------------------------------------------------------------------- #
#
# Copyright (C) 1991-2013 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions
# and other software and tools, and its AMPP partner logic
# functions, and any output files from any of the foregoing
# (including device programming or simulation files), and any
# associated documentation or information are expressly subject
# to the terms and conditions of the Altera Program License
# Subscription Agreement, Altera MegaCore Function License
# Agreement, or other applicable license agreement, including,
# without limitation, that your use is for the sole purpose of
# programming logic devices manufactured by Altera and sold by
# Altera or its authorized distributors. Please refer to the
# applicable agreement for further details.
#
# -------------------------------------------------------------------------- #
#
# Quartus II 64-Bit
# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition
# Date created = 12:30:40 April 16, 2018
#
# -------------------------------------------------------------------------- #
 
QUARTUS_VERSION = "13.0"
DATE = "12:30:40 April 16, 2018"
 
# Revisions
 
PROJECT_REVISION = "curl"
/iota_pow_vhdl/trunk/vhdl_altera_de1/curl.qsf
0,0 → 1,529
# -------------------------------------------------------------------------- #
#
# Copyright (C) 1991-2013 Altera Corporation
# Your use of Altera Corporation's design tools, logic functions
# and other software and tools, and its AMPP partner logic
# functions, and any output files from any of the foregoing
# (including device programming or simulation files), and any
# associated documentation or information are expressly subject
# to the terms and conditions of the Altera Program License
# Subscription Agreement, Altera MegaCore Function License
# Agreement, or other applicable license agreement, including,
# without limitation, that your use is for the sole purpose of
# programming logic devices manufactured by Altera and sold by
# Altera or its authorized distributors. Please refer to the
# applicable agreement for further details.
#
# -------------------------------------------------------------------------- #
#
# Quartus II 64-Bit
# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition
# Date created = 12:30:40 April 16, 2018
#
# -------------------------------------------------------------------------- #
#
# Notes:
#
# 1) The default values for assignments are stored in the file:
# curl_assignment_defaults.qdf
# If this file doesn't exist, see file:
# assignment_defaults.qdf
#
# 2) Altera recommends that you do not modify this file. This
# file is updated automatically by the Quartus II software
# and any changes you make may be lost or overwritten.
#
# -------------------------------------------------------------------------- #
 
 
set_global_assignment -name FAMILY "Cyclone II"
set_global_assignment -name DEVICE EP2C20F484C6
set_global_assignment -name TOP_LEVEL_ENTITY de1
set_global_assignment -name ORIGINAL_QUARTUS_VERSION "13.0 SP1"
set_global_assignment -name PROJECT_CREATION_TIME_DATE "12:30:40 APRIL 16, 2018"
set_global_assignment -name LAST_QUARTUS_VERSION "13.0 SP1"
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 2
set_global_assignment -name EDA_SIMULATION_TOOL "ModelSim-Altera (VHDL)"
set_global_assignment -name EDA_OUTPUT_DATA_FORMAT VHDL -section_id eda_simulation
set_global_assignment -name VHDL_FILE curl.vhd
set_global_assignment -name QIP_FILE ram.qip
set_global_assignment -name QIP_FILE ram_curl.qip
set_global_assignment -name QIP_FILE pll.qip
set_global_assignment -name VHDL_FILE de1.vhd
set_global_assignment -name SOURCE_FILE de1.qsf
set_location_assignment PIN_B6 -to AUD_ADCDAT
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_ADCDAT
set_location_assignment PIN_A6 -to AUD_ADCLRCK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_ADCLRCK
set_location_assignment PIN_A4 -to AUD_BCLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_BCLK
set_location_assignment PIN_B5 -to AUD_DACDAT
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_DACDAT
set_location_assignment PIN_A5 -to AUD_DACLRCK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_DACLRCK
set_location_assignment PIN_B4 -to AUD_XCK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to AUD_XCK
set_location_assignment PIN_A12 -to CLOCK_24[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK_24[1]
set_location_assignment PIN_B12 -to CLOCK_24[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK_24[0]
set_location_assignment PIN_E12 -to CLOCK_27[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK_27[1]
set_location_assignment PIN_D12 -to CLOCK_27[0]
set_location_assignment PIN_L1 -to CLOCK_50
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK_50
set_location_assignment PIN_N6 -to DRAM_ADDR[11]
set_location_assignment PIN_W3 -to DRAM_ADDR[10]
set_location_assignment PIN_N4 -to DRAM_ADDR[9]
set_location_assignment PIN_P3 -to DRAM_ADDR[8]
set_location_assignment PIN_P5 -to DRAM_ADDR[7]
set_location_assignment PIN_P6 -to DRAM_ADDR[6]
set_location_assignment PIN_R5 -to DRAM_ADDR[5]
set_location_assignment PIN_R6 -to DRAM_ADDR[4]
set_location_assignment PIN_Y4 -to DRAM_ADDR[3]
set_location_assignment PIN_Y3 -to DRAM_ADDR[2]
set_location_assignment PIN_W5 -to DRAM_ADDR[1]
set_location_assignment PIN_W4 -to DRAM_ADDR[0]
set_location_assignment PIN_U3 -to DRAM_BA_0
set_location_assignment PIN_V4 -to DRAM_BA_1
set_location_assignment PIN_T3 -to DRAM_CAS_N
set_location_assignment PIN_N3 -to DRAM_CKE
set_location_assignment PIN_U4 -to DRAM_CLK
set_location_assignment PIN_T6 -to DRAM_CS_N
set_location_assignment PIN_T2 -to DRAM_DQ[15]
set_location_assignment PIN_T1 -to DRAM_DQ[14]
set_location_assignment PIN_R2 -to DRAM_DQ[13]
set_location_assignment PIN_R1 -to DRAM_DQ[12]
set_location_assignment PIN_P2 -to DRAM_DQ[11]
set_location_assignment PIN_P1 -to DRAM_DQ[10]
set_location_assignment PIN_N2 -to DRAM_DQ[9]
set_location_assignment PIN_N1 -to DRAM_DQ[8]
set_location_assignment PIN_Y2 -to DRAM_DQ[7]
set_location_assignment PIN_Y1 -to DRAM_DQ[6]
set_location_assignment PIN_W2 -to DRAM_DQ[5]
set_location_assignment PIN_W1 -to DRAM_DQ[4]
set_location_assignment PIN_V2 -to DRAM_DQ[3]
set_location_assignment PIN_V1 -to DRAM_DQ[2]
set_location_assignment PIN_U2 -to DRAM_DQ[1]
set_location_assignment PIN_U1 -to DRAM_DQ[0]
set_location_assignment PIN_R7 -to DRAM_LDQM
set_location_assignment PIN_T5 -to DRAM_RAS_N
set_location_assignment PIN_M5 -to DRAM_UDQM
set_location_assignment PIN_R8 -to DRAM_WE_N
set_location_assignment PIN_M21 -to EXT_CLOCK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to EXT_CLOCK
set_location_assignment PIN_R13 -to FL_ADDR[21]
set_location_assignment PIN_U13 -to FL_ADDR[20]
set_location_assignment PIN_V14 -to FL_ADDR[19]
set_location_assignment PIN_U14 -to FL_ADDR[18]
set_location_assignment PIN_AA20 -to FL_ADDR[17]
set_location_assignment PIN_AB12 -to FL_ADDR[16]
set_location_assignment PIN_AA12 -to FL_ADDR[15]
set_location_assignment PIN_AB13 -to FL_ADDR[14]
set_location_assignment PIN_AA13 -to FL_ADDR[13]
set_location_assignment PIN_AB14 -to FL_ADDR[12]
set_location_assignment PIN_T12 -to FL_ADDR[11]
set_location_assignment PIN_R12 -to FL_ADDR[10]
set_location_assignment PIN_Y13 -to FL_ADDR[9]
set_location_assignment PIN_R14 -to FL_ADDR[8]
set_location_assignment PIN_W15 -to FL_ADDR[7]
set_location_assignment PIN_V15 -to FL_ADDR[6]
set_location_assignment PIN_U15 -to FL_ADDR[5]
set_location_assignment PIN_T15 -to FL_ADDR[4]
set_location_assignment PIN_R15 -to FL_ADDR[3]
set_location_assignment PIN_Y16 -to FL_ADDR[2]
set_location_assignment PIN_AA14 -to FL_ADDR[1]
set_location_assignment PIN_AB20 -to FL_ADDR[0]
set_location_assignment PIN_AB15 -to FL_CE_N
set_location_assignment PIN_AA19 -to FL_DQ[7]
set_location_assignment PIN_AB19 -to FL_DQ[6]
set_location_assignment PIN_AA18 -to FL_DQ[5]
set_location_assignment PIN_AB18 -to FL_DQ[4]
set_location_assignment PIN_AA17 -to FL_DQ[3]
set_location_assignment PIN_AB17 -to FL_DQ[2]
set_location_assignment PIN_AA16 -to FL_DQ[1]
set_location_assignment PIN_AB16 -to FL_DQ[0]
set_location_assignment PIN_AA15 -to FL_OE_N
set_location_assignment PIN_W14 -to FL_RST_N
set_location_assignment PIN_Y14 -to FL_WE_N
set_location_assignment PIN_L18 -to GPIO_0[35]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[35]
set_location_assignment PIN_L19 -to GPIO_0[34]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[34]
set_location_assignment PIN_K20 -to GPIO_0[33]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[33]
set_location_assignment PIN_J18 -to GPIO_0[32]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[32]
set_location_assignment PIN_J20 -to GPIO_0[31]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[31]
set_location_assignment PIN_J19 -to GPIO_0[30]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[30]
set_location_assignment PIN_K22 -to GPIO_0[29]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[29]
set_location_assignment PIN_K21 -to GPIO_0[28]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[28]
set_location_assignment PIN_J22 -to GPIO_0[27]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[27]
set_location_assignment PIN_J21 -to GPIO_0[26]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[26]
set_location_assignment PIN_G22 -to GPIO_0[25]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[25]
set_location_assignment PIN_G21 -to GPIO_0[24]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[24]
set_location_assignment PIN_F22 -to GPIO_0[23]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[23]
set_location_assignment PIN_F21 -to GPIO_0[22]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[22]
set_location_assignment PIN_E22 -to GPIO_0[21]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[21]
set_location_assignment PIN_E21 -to GPIO_0[20]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[20]
set_location_assignment PIN_D22 -to GPIO_0[19]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[19]
set_location_assignment PIN_D21 -to GPIO_0[18]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[18]
set_location_assignment PIN_C22 -to GPIO_0[17]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[17]
set_location_assignment PIN_C21 -to GPIO_0[16]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[16]
set_location_assignment PIN_B20 -to GPIO_0[15]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[15]
set_location_assignment PIN_A20 -to GPIO_0[14]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[14]
set_location_assignment PIN_B19 -to GPIO_0[13]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[13]
set_location_assignment PIN_A19 -to GPIO_0[12]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[12]
set_location_assignment PIN_B18 -to GPIO_0[11]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[11]
set_location_assignment PIN_A18 -to GPIO_0[10]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[10]
set_location_assignment PIN_B17 -to GPIO_0[9]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[9]
set_location_assignment PIN_A17 -to GPIO_0[8]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[8]
set_location_assignment PIN_B16 -to GPIO_0[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[7]
set_location_assignment PIN_A16 -to GPIO_0[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[6]
set_location_assignment PIN_B15 -to GPIO_0[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[5]
set_location_assignment PIN_A15 -to GPIO_0[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[4]
set_location_assignment PIN_B14 -to GPIO_0[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[3]
set_location_assignment PIN_A14 -to GPIO_0[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[2]
set_location_assignment PIN_B13 -to GPIO_0[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[1]
set_location_assignment PIN_A13 -to GPIO_0[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_0[0]
set_location_assignment PIN_P18 -to GPIO_1[35]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[35]
set_location_assignment PIN_P17 -to GPIO_1[34]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[34]
set_location_assignment PIN_N15 -to GPIO_1[33]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[33]
set_location_assignment PIN_P15 -to GPIO_1[32]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[32]
set_location_assignment PIN_N21 -to GPIO_1[31]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[31]
set_location_assignment PIN_N22 -to GPIO_1[30]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[30]
set_location_assignment PIN_H18 -to GPIO_1[29]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[29]
set_location_assignment PIN_J15 -to GPIO_1[28]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[28]
set_location_assignment PIN_H17 -to GPIO_1[27]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[27]
set_location_assignment PIN_G17 -to GPIO_1[26]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[26]
set_location_assignment PIN_G18 -to GPIO_1[25]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[25]
set_location_assignment PIN_G20 -to GPIO_1[24]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[24]
set_location_assignment PIN_E18 -to GPIO_1[23]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[23]
set_location_assignment PIN_E19 -to GPIO_1[22]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[22]
set_location_assignment PIN_F20 -to GPIO_1[21]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[21]
set_location_assignment PIN_E20 -to GPIO_1[20]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[20]
set_location_assignment PIN_D20 -to GPIO_1[19]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[19]
set_location_assignment PIN_D19 -to GPIO_1[18]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[18]
set_location_assignment PIN_C20 -to GPIO_1[17]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[17]
set_location_assignment PIN_C19 -to GPIO_1[16]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[16]
set_location_assignment PIN_C18 -to GPIO_1[15]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[15]
set_location_assignment PIN_C17 -to GPIO_1[14]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[14]
set_location_assignment PIN_D16 -to GPIO_1[13]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[13]
set_location_assignment PIN_D15 -to GPIO_1[12]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[12]
set_location_assignment PIN_D14 -to GPIO_1[11]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[11]
set_location_assignment PIN_C14 -to GPIO_1[10]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[10]
set_location_assignment PIN_F13 -to GPIO_1[9]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[9]
set_location_assignment PIN_F12 -to GPIO_1[8]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[8]
set_location_assignment PIN_G16 -to GPIO_1[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[7]
set_location_assignment PIN_F15 -to GPIO_1[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[6]
set_location_assignment PIN_E15 -to GPIO_1[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[5]
set_location_assignment PIN_E14 -to GPIO_1[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[4]
set_location_assignment PIN_G15 -to GPIO_1[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[3]
set_location_assignment PIN_H14 -to GPIO_1[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[2]
set_location_assignment PIN_H13 -to GPIO_1[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[1]
set_location_assignment PIN_H12 -to GPIO_1[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO_1[0]
set_location_assignment PIN_E2 -to HEX0[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[6]
set_location_assignment PIN_F1 -to HEX0[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[5]
set_location_assignment PIN_F2 -to HEX0[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[4]
set_location_assignment PIN_H1 -to HEX0[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[3]
set_location_assignment PIN_H2 -to HEX0[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[2]
set_location_assignment PIN_J1 -to HEX0[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[1]
set_location_assignment PIN_J2 -to HEX0[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[0]
set_location_assignment PIN_D1 -to HEX1[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[6]
set_location_assignment PIN_D2 -to HEX1[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[5]
set_location_assignment PIN_G3 -to HEX1[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[4]
set_location_assignment PIN_H4 -to HEX1[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[3]
set_location_assignment PIN_H5 -to HEX1[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[2]
set_location_assignment PIN_H6 -to HEX1[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[1]
set_location_assignment PIN_E1 -to HEX1[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[0]
set_location_assignment PIN_D3 -to HEX2[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[6]
set_location_assignment PIN_E4 -to HEX2[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[5]
set_location_assignment PIN_E3 -to HEX2[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[4]
set_location_assignment PIN_C1 -to HEX2[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[3]
set_location_assignment PIN_C2 -to HEX2[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[2]
set_location_assignment PIN_G6 -to HEX2[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[1]
set_location_assignment PIN_G5 -to HEX2[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[0]
set_location_assignment PIN_D4 -to HEX3[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[6]
set_location_assignment PIN_F3 -to HEX3[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[5]
set_location_assignment PIN_L8 -to HEX3[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[4]
set_location_assignment PIN_J4 -to HEX3[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[3]
set_location_assignment PIN_D6 -to HEX3[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[2]
set_location_assignment PIN_D5 -to HEX3[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[1]
set_location_assignment PIN_F4 -to HEX3[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[0]
set_location_assignment PIN_A3 -to I2C_SCLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to I2C_SCLK
set_location_assignment PIN_B3 -to I2C_SDAT
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to I2C_SDAT
set_location_assignment PIN_T21 -to KEY[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to KEY[3]
set_location_assignment PIN_T22 -to KEY[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to KEY[2]
set_location_assignment PIN_R21 -to KEY[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to KEY[1]
set_location_assignment PIN_R22 -to KEY[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to KEY[0]
set_location_assignment PIN_Y21 -to LEDG[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[7]
set_location_assignment PIN_Y22 -to LEDG[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[6]
set_location_assignment PIN_W21 -to LEDG[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[5]
set_location_assignment PIN_W22 -to LEDG[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[4]
set_location_assignment PIN_V21 -to LEDG[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[3]
set_location_assignment PIN_V22 -to LEDG[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[2]
set_location_assignment PIN_U21 -to LEDG[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[1]
set_location_assignment PIN_U22 -to LEDG[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDG[0]
set_location_assignment PIN_R17 -to LEDR[9]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[9]
set_location_assignment PIN_R18 -to LEDR[8]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[8]
set_location_assignment PIN_U18 -to LEDR[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[7]
set_location_assignment PIN_Y18 -to LEDR[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[6]
set_location_assignment PIN_V19 -to LEDR[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[5]
set_location_assignment PIN_T18 -to LEDR[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[4]
set_location_assignment PIN_Y19 -to LEDR[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[3]
set_location_assignment PIN_U19 -to LEDR[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[2]
set_location_assignment PIN_R19 -to LEDR[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[1]
set_location_assignment PIN_R20 -to LEDR[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[0]
set_location_assignment PIN_H15 -to PS2_CLK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PS2_CLK
set_location_assignment PIN_J14 -to PS2_DAT
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to PS2_DAT
set_location_assignment PIN_Y5 -to SRAM_ADDR[17]
set_location_assignment PIN_Y6 -to SRAM_ADDR[16]
set_location_assignment PIN_T7 -to SRAM_ADDR[15]
set_location_assignment PIN_R10 -to SRAM_ADDR[14]
set_location_assignment PIN_U10 -to SRAM_ADDR[13]
set_location_assignment PIN_Y10 -to SRAM_ADDR[12]
set_location_assignment PIN_T11 -to SRAM_ADDR[11]
set_location_assignment PIN_R11 -to SRAM_ADDR[10]
set_location_assignment PIN_W11 -to SRAM_ADDR[9]
set_location_assignment PIN_V11 -to SRAM_ADDR[8]
set_location_assignment PIN_AB11 -to SRAM_ADDR[7]
set_location_assignment PIN_AA11 -to SRAM_ADDR[6]
set_location_assignment PIN_AB10 -to SRAM_ADDR[5]
set_location_assignment PIN_AA5 -to SRAM_ADDR[4]
set_location_assignment PIN_AB4 -to SRAM_ADDR[3]
set_location_assignment PIN_AA4 -to SRAM_ADDR[2]
set_location_assignment PIN_AB3 -to SRAM_ADDR[1]
set_location_assignment PIN_AA3 -to SRAM_ADDR[0]
set_location_assignment PIN_AB5 -to SRAM_CE_N
set_location_assignment PIN_U8 -to SRAM_DQ[15]
set_location_assignment PIN_V8 -to SRAM_DQ[14]
set_location_assignment PIN_W8 -to SRAM_DQ[13]
set_location_assignment PIN_R9 -to SRAM_DQ[12]
set_location_assignment PIN_U9 -to SRAM_DQ[11]
set_location_assignment PIN_V9 -to SRAM_DQ[10]
set_location_assignment PIN_W9 -to SRAM_DQ[9]
set_location_assignment PIN_Y9 -to SRAM_DQ[8]
set_location_assignment PIN_AB9 -to SRAM_DQ[7]
set_location_assignment PIN_AA9 -to SRAM_DQ[6]
set_location_assignment PIN_AB8 -to SRAM_DQ[5]
set_location_assignment PIN_AA8 -to SRAM_DQ[4]
set_location_assignment PIN_AB7 -to SRAM_DQ[3]
set_location_assignment PIN_AA7 -to SRAM_DQ[2]
set_location_assignment PIN_AB6 -to SRAM_DQ[1]
set_location_assignment PIN_AA6 -to SRAM_DQ[0]
set_location_assignment PIN_Y7 -to SRAM_LB_N
set_location_assignment PIN_T8 -to SRAM_OE_N
set_location_assignment PIN_W7 -to SRAM_UB_N
set_location_assignment PIN_AA10 -to SRAM_WE_N
set_location_assignment PIN_L2 -to SW[9]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[9]
set_location_assignment PIN_M1 -to SW[8]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[8]
set_location_assignment PIN_M2 -to SW[7]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[7]
set_location_assignment PIN_U11 -to SW[6]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[6]
set_location_assignment PIN_U12 -to SW[5]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[5]
set_location_assignment PIN_W12 -to SW[4]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[4]
set_location_assignment PIN_V12 -to SW[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[3]
set_location_assignment PIN_M22 -to SW[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[2]
set_location_assignment PIN_L21 -to SW[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[1]
set_location_assignment PIN_L22 -to SW[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[0]
set_location_assignment PIN_C7 -to TCK
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TCK
set_location_assignment PIN_D8 -to TCS
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TCS
set_location_assignment PIN_E8 -to TDI
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TDI
set_location_assignment PIN_D7 -to TDO
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to TDO
set_location_assignment PIN_F14 -to UART_RXD
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to UART_RXD
set_location_assignment PIN_G12 -to UART_TXD
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to UART_TXD
set_location_assignment PIN_B10 -to VGA_B[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[3]
set_location_assignment PIN_A10 -to VGA_B[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[2]
set_location_assignment PIN_D11 -to VGA_B[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[1]
set_location_assignment PIN_A9 -to VGA_B[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_B[0]
set_location_assignment PIN_A8 -to VGA_G[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[3]
set_location_assignment PIN_B9 -to VGA_G[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[2]
set_location_assignment PIN_C10 -to VGA_G[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[1]
set_location_assignment PIN_B8 -to VGA_G[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_G[0]
set_location_assignment PIN_A11 -to VGA_HS
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_HS
set_location_assignment PIN_B7 -to VGA_R[3]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[3]
set_location_assignment PIN_A7 -to VGA_R[2]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[2]
set_location_assignment PIN_C9 -to VGA_R[1]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[1]
set_location_assignment PIN_D9 -to VGA_R[0]
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_R[0]
set_location_assignment PIN_B11 -to VGA_VS
set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to VGA_VS
 
set_global_assignment -name VHDL_FILE spi_slave.vhd
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id TOP_LEVEL_ENTITY
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id TOP_LEVEL_ENTITY
set_global_assignment -name PARTITION_COLOR 16764057 -section_id TOP_LEVEL_ENTITY
set_global_assignment -name VHDL_FILE index_table.vhd
set_global_assignment -name SMART_RECOMPILE ON
set_global_assignment -name ENABLE_DRC_SETTINGS ON
set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE SPEED
set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC ON
set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION ON
set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING ON
set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL MAXIMUM
set_global_assignment -name AUTO_PACKED_REGISTERS_STRATIXII NORMAL
set_global_assignment -name FITTER_EFFORT "STANDARD FIT"
set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS ON
set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP ON
set_global_assignment -name MUX_RESTRUCTURE OFF
set_global_assignment -name STATE_MACHINE_PROCESSING "ONE-HOT"
set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW"
set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)"
set_global_assignment -name OPTIMIZE_HOLD_TIMING "ALL PATHS"
set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING ON
set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 4.0
set_global_assignment -name ROUTER_EFFORT_MULTIPLIER 4.0
 
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id TOP_LEVEL_ENTITY
/iota_pow_vhdl/trunk/vhdl_altera_de1/curl.vhd
0,0 → 1,311
-- IOTA Pearl Diver VHDL Port
--
-- Written 2018 by Thomas Pototschnig <microengineer18@gmail.com>
--
-- This source code is currently licensed under
-- Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
--
-- http://www.microengineer.eu
--
-- If you like my project please consider a donation to
--
-- LLEYMHRKXWSPMGCMZFPKKTHSEMYJTNAZXSAYZGQUEXLXEEWPXUNWBFDWESOJVLHQHXOPQEYXGIRBYTLRWHMJAOSHUY
--
-- As soon as donations reach 1000MIOTA, everything will become
-- GPL and open for any use - commercial included.
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use work.index_table.all;
 
entity curl is
generic
(
HASH_LENGTH : integer := 243;
STATE_LENGTH : integer := 729; -- 3 * HASH_LENGTH;
NONCE_LENGTH : integer := 81; -- HASH_LENGTH / 3;
NUMBER_OF_ROUNDS : integer := 81;
PARALLEL : integer := 5;
INTERN_NONCE_LENGTH : integer := 32;
BITS_MIN_WEIGHT_MAGINUTE_MAX : integer := 26;
DATA_WIDTH : integer := 9
);
 
port
(
clk : in std_logic;
clk_slow : in std_logic;
reset : in std_logic;
spi_data_rx : in std_logic_vector(31 downto 0);
spi_data_tx : out std_logic_vector(31 downto 0);
spi_data_rxen : in std_logic;
overflow : out std_logic;
running : out std_logic;
found : out std_logic
);
end curl;
 
architecture behv of curl is
 
subtype state_vector_type is std_logic_vector(PARALLEL-1 downto 0);
subtype mid_state_vector_type is std_logic_vector(DATA_WIDTH-1 downto 0);
 
type curl_state_array is array(integer range <>) of state_vector_type;
type mid_state_array is array(integer range <>) of mid_state_vector_type;
 
signal curl_state_low : curl_state_array(STATE_LENGTH-1 downto 0);
signal curl_state_high : curl_state_array(STATE_LENGTH-1 downto 0);
 
-- mid state data in 9bit packed format
signal curl_mid_state_low : mid_state_array((STATE_LENGTH/9)-1 downto 0);
signal curl_mid_state_high : mid_state_array((STATE_LENGTH/9)-1 downto 0);
 
signal flag_running : std_logic := '0';
signal flag_overflow : std_logic := '0';
signal flag_found : std_logic := '0';
signal flag_start : std_logic := '0';
 
signal binary_nonce : unsigned(INTERN_NONCE_LENGTH-1 downto 0);
signal mask : state_vector_type;
signal min_weight_magnitude : std_logic_vector(BITS_MIN_WEIGHT_MAGINUTE_MAX-1 downto 0);
 
 
begin
overflow <= flag_overflow;
running <= flag_running;
found <= flag_found;
process (clk_slow)
-- because it looks prettier
variable spi_cmd : std_logic_vector(5 downto 0);
variable wraddr : integer range 0 to 127 := 0;
begin
if rising_edge(clk_slow) then
if reset='1' then
-- binary_nonce <= (others => '0');
min_weight_magnitude <= (others => '0');
flag_start <= '0';
else
flag_start <= '0';
-- new spi data received
if spi_data_rxen = '1' then
spi_cmd := spi_data_rx(31 downto 26);
case spi_cmd is
when "000000" => -- nop
when "100001" => -- start / stop
if spi_data_rx(0) = '1' then
flag_start <= '1';
end if;
when "100101" => -- write to wr address
wraddr := 0;
when "100010" => -- write to mid state
curl_mid_state_low(wraddr) <= std_logic_vector(spi_data_rx(DATA_WIDTH-1 downto 0));
curl_mid_state_high(wraddr) <= std_logic_vector(spi_data_rx(DATA_WIDTH+8 downto DATA_WIDTH));
wraddr := wraddr + 1;
when "100100" =>
min_weight_magnitude <= spi_data_rx(BITS_MIN_WEIGHT_MAGINUTE_MAX-1 downto 0);
 
when "000001" => -- read flags
spi_data_tx <= "00000000000000000000000000000" & flag_overflow & flag_found & flag_running;
-- this costs an extreme amount of resources
-- interesting only for debugging
-- when "000010" =>
-- spi_addr := spi_data_rx(25 downto 16);
-- spi_data_tx(0+PARALLEL-1 downto 0) <= curl_state_low(to_integer(unsigned(spi_addr)));
-- spi_data_tx(8+PARALLEL-1 downto 8) <= curl_state_high(to_integer(unsigned(spi_addr)));
when "000011" => -- read nonce
spi_data_tx(31 downto INTERN_NONCE_LENGTH) <= (others => '0');
spi_data_tx(INTERN_NONCE_LENGTH-1 downto 0) <= std_logic_vector(binary_nonce);
when "000100" => -- read mask
spi_data_tx(PARALLEL-1 downto 0) <= mask;
spi_data_tx(31 downto PARALLEL) <= (others => '0');
when "000110" => -- read back parallel-level
spi_data_tx <= std_logic_vector(to_unsigned(PARALLEL, spi_data_tx'length));
when "010101" => -- loop back read test inverted bits
spi_data_tx <= not spi_data_rx;
when others =>
spi_data_tx <= (others => '1');
end case;
end if;
end if;
end if;
end process;
process (clk)
variable state : integer range 0 to 31 := 0;
variable round : integer range 0 to 127 := 0;
 
variable imask : state_vector_type;
variable i_min_weight_magnitude : std_logic_vector(BITS_MIN_WEIGHT_MAGINUTE_MAX-1 downto 0);
 
-- temporary registers get optimized away
variable alpha : curl_state_array(STATE_LENGTH-1 downto 0);
variable beta : curl_state_array(STATE_LENGTH-1 downto 0);
variable gamma : curl_state_array(STATE_LENGTH-1 downto 0);
variable delta : curl_state_array(STATE_LENGTH-1 downto 0);
variable epsilon : curl_state_array(STATE_LENGTH-1 downto 0);
variable tmp_index : integer range 0 to 1023;
variable tmp_mod : integer range 0 to 31;
begin
if rising_edge(clk) then
if reset='1' then
state := 0;
flag_found <= '0';
flag_running <= '0';
flag_overflow <= '0';
binary_nonce <= (others => '0');
else
case state is
when 0 =>
flag_running <= '0';
if flag_start = '1' then
i_min_weight_magnitude := min_weight_magnitude;
state := 1;
end if;
-- nop until start from spi
when 1 =>
binary_nonce <= (others => '0');
flag_found <= '0';
flag_running <= '1';
flag_overflow <= '0';
state := 8;
when 8 => -- copy mid state and insert nonce
-- pipeline adder for speed
binary_nonce <= binary_nonce + 1;
-- copy and fully expand mid-state to curl-state
for I in 0 to (STATE_LENGTH/DATA_WIDTH)-1 loop
for J in 0 to DATA_WIDTH-1 loop
tmp_index := I*DATA_WIDTH+J;
if tmp_index < 162 or tmp_index > HASH_LENGTH-1 then
if curl_mid_state_low(I)(J) = '1' then
curl_state_low(tmp_index) <= (others => '1');
else
curl_state_low(tmp_index) <= (others => '0');
end if;
if curl_mid_state_high(I)(J) = '1' then
curl_state_high(tmp_index) <= (others => '1');
else
curl_state_high(tmp_index) <= (others => '0');
end if;
end if;
end loop;
end loop;
-- -- generate bitmuster in first two trit-arrays of counter depending from PARALLEL setting
-- -- doesn't need additional resources for pow or division because everything is constant
for J in 0 to 1 loop -- TODO make adjustable ... it's okay up to PARALLEL = 9
for I in 0 to PARALLEL-1 loop
tmp_mod := (I/(3**J)) mod 3;
if tmp_mod = 0 then
curl_state_low(162+J)(I) <= '1';
curl_state_high(162+J)(I) <= '1';
elsif tmp_mod = 1 then
curl_state_low(162+J)(I) <= '0';
curl_state_high(162+J)(I) <= '1';
elsif tmp_mod = 2 then
curl_state_low(162+J)(I) <= '1';
curl_state_high(162+J)(I) <= '0';
end if;
end loop;
end loop;
 
-- lowest trits for counter from 0 to 4 (for 5bit)
-- curl_state_low(162) <= "01101";
-- curl_state_high(162) <= "11011";
-- curl_state_low(163) <= "00111";
-- curl_state_high(163) <= "11111";
-- insert and convert binary nonce to trinary nonce
-- It's a fake trinary nonce but integer-values are strictly monotonously rising
-- with integer values of binary nonce.
-- Doesn't bring the exact same result like reference implementation with real
-- trinary adder - but it doesn't matter and it is way faster.
for I in 164 to 164+INTERN_NONCE_LENGTH-1 loop
if binary_nonce(I-164) = '1' then
curl_state_low(I) <= (others => '1');
curl_state_high(I) <= (others => '0');
else
curl_state_low(I) <= (others => '0');
curl_state_high(I) <= (others => '1');
end if;
end loop;
-- fill remaining trits with '11' (=0)
for I in 164+INTERN_NONCE_LENGTH to HASH_LENGTH-1 loop
curl_state_low(I) <= (others => '1');
curl_state_high(I) <= (others => '1');
end loop;
 
-- initialize round-counter
round := NUMBER_OF_ROUNDS;
state := 10;
when 10 => -- do the curl hash round without any copying needed
for I in 0 to STATE_LENGTH-1 loop
alpha(I) := curl_state_low(index_table(I));
beta(I) := curl_state_high(index_table(I));
gamma(I) := curl_state_high(index_table(I+1));
delta(I) := (alpha(I) or (not gamma(I))) and (curl_state_low(index_table(I+1)) xor beta(I));
 
curl_state_low(I) <= not delta(I);
curl_state_high(I) <= (alpha(I) xor gamma(I)) or delta(I);
end loop;
 
round := round - 1;
if round = 0 then
state := 16;
end if;
when 16 => -- find out which solution - if any
imask := (others => '1');
-- doesn't work like the 2nd variant ... why? TODO^^
for I in 0 to PARALLEL-1 loop
for J in 0 to BITS_MIN_WEIGHT_MAGINUTE_MAX-1 loop
if i_min_weight_magnitude(J) = '1' and (curl_state_low(HASH_LENGTH - 1 - J)(I) /= '1' or curl_state_high(HASH_LENGTH - 1 - J)(I) /= '1') then
imask(I) := '0';
end if;
end loop;
end loop;
-- imask := (others => '1');
-- for I in 0 to BITS_MIN_WEIGHT_MAGINUTE_MAX-1 loop
-- if i_min_weight_magnitude(I) = '1' then
-- imask := imask and not (curl_state_low(HASH_LENGTH - 1 - I) xor curl_state_high(HASH_LENGTH - 1 - I));
-- end if;
-- end loop;
-- mask <= imask;
 
-- no solution found?
if unsigned(imask) = 0 then
-- is overflow?
if binary_nonce = x"ffffffff" then
flag_overflow <= '1';
state := 0;
else
state := 8; -- and try again
end if;
else
state := 30; -- nonce found
end if;
when 30 =>
mask <= imask;
flag_found <= '1';
state := 0;
when others =>
state := 0;
end case;
end if;
end if;
end process;
end behv;
/iota_pow_vhdl/trunk/vhdl_altera_de1/de1.vhd
0,0 → 1,243
-- IOTA Pearl Diver VHDL Port
--
-- Written 2018 by Thomas Pototschnig <microengineer18@gmail.com>
--
-- This source code is currently licensed under
-- Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
--
-- http://www.microengineer.eu
--
-- If you like my project please consider a donation to
--
-- LLEYMHRKXWSPMGCMZFPKKTHSEMYJTNAZXSAYZGQUEXLXEEWPXUNWBFDWESOJVLHQHXOPQEYXGIRBYTLRWHMJAOSHUY
--
-- As soon as donations reach 1000MIOTA, everything will become
-- GPL and open for any use - commercial included.
 
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
entity de1 is
port (
-- //////////////////// Clock Input ////////////////////
CLOCK_24 : in std_logic_vector (1 downto 0);
CLOCK_27 : in std_logic_vector (1 downto 0);
CLOCK_50 : in std_logic;
EXT_CLOCK : in std_logic;
-- //////////////////// Push Button ////////////////////
KEY : in std_logic_vector(3 downto 0);
-- //////////////////// DPDT Switch ////////////////////
SW : in std_logic_vector (9 downto 0);
-- //////////////////// 7-SEG Dispaly ////////////////////
HEX0 : out std_logic_vector (6 downto 0);
HEX1 : out std_logic_vector (6 downto 0);
HEX2 : out std_logic_vector (6 downto 0);
HEX3 : out std_logic_vector (6 downto 0);
-- //////////////////////// LED ////////////////////////
LEDG : out std_logic_vector (7 downto 0);
LEDR : out std_logic_vector (9 downto 0);
-- //////////////////////// UART ////////////////////////
UART_TXD : out std_logic;
UART_RXD : in std_logic;
-- ///////////////////// SDRAM Interface ////////////////
DRAM_DQ : inout std_logic_vector (15 downto 0);
DRAM_ADDR : out std_logic_vector (11 downto 0);
DRAM_LDQM : out std_logic;
DRAM_UDQM : out std_logic;
DRAM_WE_N : out std_logic;
DRAM_CAS_N : out std_logic;
DRAM_RAS_N : out std_logic;
DRAM_CS_N : out std_logic;
DRAM_BA_0 : out std_logic;
DRAM_BA_1 : out std_logic;
DRAM_CLK : out std_logic;
DRAM_CKE : out std_logic;
-- //////////////////// Flash Interface ////////////////
FL_DQ : inout std_logic_vector (7 downto 0);
FL_ADDR : out std_logic_vector (21 downto 0);
FL_WE_N : out std_logic;
FL_RST_N : out std_logic;
FL_OE_N : out std_logic;
FL_CE_N : out std_logic;
-- //////////////////// SRAM Interface ////////////////
SRAM_DQ : inout std_logic_vector (15 downto 0);
SRAM_ADDR : out std_logic_vector (17 downto 0);
SRAM_UB_N : out std_logic;
SRAM_LB_N : out std_logic;
SRAM_WE_N : out std_logic;
SRAM_CE_N : out std_logic;
SRAM_OE_N : out std_logic;
-- //////////////////// SD_Card Interface ////////////////
SD_DAT : inout std_logic;
SD_DAT3 : inout std_logic;
SD_CMD : inout std_logic;
SD_CLK : out std_logic;
-- //////////////////// USB JTAG link ////////////////////
TDI : in std_logic;
TCK : in std_logic;
TCS : in std_logic;
TDO : out std_logic;
-- //////////////////// I2C ////////////////////////////
I2C_SDAT : inout std_logic;
I2C_SCLK : out std_logic;
-- //////////////////// PS2 ////////////////////////////
PS2_DAT : in std_logic;
PS2_CLK : in std_logic;
-- //////////////////// VGA ////////////////////////////
VGA_HS : out std_logic;
VGA_VS : out std_logic;
VGA_R : out std_logic_vector (3 downto 0);
VGA_G: out std_logic_vector (3 downto 0);
VGA_B: out std_logic_vector (3 downto 0);
-- //////////////// Audio CODEC ////////////////////////
AUD_ADCLRCK : inout std_logic;
AUD_ADCDAT : in std_logic;
AUD_DACLRCK : inout std_logic;
AUD_DACDAT : out std_logic;
AUD_BCLK : out std_logic;
AUD_XCK : out std_logic;
-- //////////////////// GPIO ////////////////////////////
GPIO_0 : inout std_logic_vector (35 downto 0);
GPIO_1 : inout std_logic_vector (35 downto 0)
);
end;
 
architecture beh of de1 is
 
 
signal reset : std_logic;
 
signal pll_clk : std_logic;
signal pll_reset : std_logic := '0';
signal pll_locked : std_logic;
 
signal spi_data_tx : std_logic_vector(31 downto 0);
signal spi_data_rx : std_logic_vector(31 downto 0);
signal spi_data_rx_en : std_logic;
 
signal running : std_logic := '0';
signal overflow : std_logic := '0';
signal found : std_logic := '0';
 
signal spi_mosi : std_logic;
signal spi_miso : std_logic;
signal spi_sck : std_logic;
signal spi_ss : std_logic;
signal pll_slow : std_logic;
component spi_slave
port
(
clk : in std_logic;
reset : in std_logic;
mosi : in std_logic;
miso : out std_logic;
sck : in std_logic;
ss : in std_logic;
data_rd : in std_logic_vector(31 downto 0);
data_wr : out std_logic_vector(31 downto 0);
data_wren : out std_logic
);
end component;
 
component pll
PORT
(
areset : IN STD_LOGIC := '0';
inclk0 : IN STD_LOGIC := '0';
c0 : OUT STD_LOGIC ;
c1 : out std_logic;
locked : OUT STD_LOGIC
);
end component;
 
component curl
port
(
clk : in std_logic;
clk_slow : in std_logic;
reset : in std_logic;
spi_data_rx : in std_logic_vector(31 downto 0);
spi_data_tx : out std_logic_vector(31 downto 0);
spi_data_rxen : in std_logic;
 
overflow : out std_logic;
running : out std_logic;
found : out std_logic
);
end component;
 
begin
pll0 : pll port map (
areset => pll_reset,
inclk0 => CLOCK_50,
c0 => pll_clk,
c1 => pll_slow,
locked => pll_locked
);
spi0 : spi_slave port map (
clk => pll_slow,
reset => reset,
mosi => spi_mosi,
miso => spi_miso,
sck => spi_sck,
ss => spi_ss,
data_rd => spi_data_tx,
data_wr => spi_data_rx,
data_wren => spi_data_rx_en
);
curl0 : curl port map (
clk => pll_clk,
reset => reset,
clk_slow => pll_slow,
spi_data_rx => spi_data_rx,
spi_data_tx => spi_data_tx,
spi_data_rxen => spi_data_rx_en,
overflow => overflow,
running => running,
found => found
);
-- disable all DE1 stuff
DRAM_DQ <= (others => 'Z');
FL_DQ <= (others => 'Z');
SRAM_DQ <= (others => 'Z');
SD_DAT <= 'Z';
I2C_SDAT <= 'Z';
GPIO_0 <= (others => 'Z');
GPIO_1 <= (others => 'Z');
 
LEDR <= "0" & "1" & spi_ss & spi_sck & spi_mosi & spi_miso & reset & overflow & found & running;
LEDG <= (others => '0');
 
AUD_BCLK <= '0';
AUD_DACLRCK <= '0';
AUD_ADCLRCK <= '0';
AUD_XCK <= '0';
 
SRAM_ADDR(17)<='0';
 
reset <= not SW(0);
 
spi_mosi <= GPIO_0(0);
spi_sck <= GPIO_0(2);
spi_ss <= GPIO_0(3);
 
-- all pins except one is input
GPIO_0(3 downto 0) <= "ZZ" & spi_miso & "Z";
 
 
end architecture;
/iota_pow_vhdl/trunk/vhdl_altera_de1/index_table.vhd
0,0 → 1,763
-- IOTA Pearl Diver VHDL Port
--
-- Written 2018 by Thomas Pototschnig <microengineer18@gmail.com>
--
-- This source code is currently licensed under
-- Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
--
-- http://www.microengineer.eu
--
-- If you like my project please consider a donation to
--
-- LLEYMHRKXWSPMGCMZFPKKTHSEMYJTNAZXSAYZGQUEXLXEEWPXUNWBFDWESOJVLHQHXOPQEYXGIRBYTLRWHMJAOSHUY
--
-- As soon as donations reach 1000MIOTA, everything will become
-- GPL and open for any use - commercial included.
 
library ieee;
 
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
package index_table is
type const_index_table is array ( 0 to 729) of integer range 0 to 728;
constant index_table : const_index_table := (
0 => 0,
1 => 364,
2 => 728,
3 => 363,
4 => 727,
5 => 362,
6 => 726,
7 => 361,
8 => 725,
9 => 360,
10 => 724,
11 => 359,
12 => 723,
13 => 358,
14 => 722,
15 => 357,
16 => 721,
17 => 356,
18 => 720,
19 => 355,
20 => 719,
21 => 354,
22 => 718,
23 => 353,
24 => 717,
25 => 352,
26 => 716,
27 => 351,
28 => 715,
29 => 350,
30 => 714,
31 => 349,
32 => 713,
33 => 348,
34 => 712,
35 => 347,
36 => 711,
37 => 346,
38 => 710,
39 => 345,
40 => 709,
41 => 344,
42 => 708,
43 => 343,
44 => 707,
45 => 342,
46 => 706,
47 => 341,
48 => 705,
49 => 340,
50 => 704,
51 => 339,
52 => 703,
53 => 338,
54 => 702,
55 => 337,
56 => 701,
57 => 336,
58 => 700,
59 => 335,
60 => 699,
61 => 334,
62 => 698,
63 => 333,
64 => 697,
65 => 332,
66 => 696,
67 => 331,
68 => 695,
69 => 330,
70 => 694,
71 => 329,
72 => 693,
73 => 328,
74 => 692,
75 => 327,
76 => 691,
77 => 326,
78 => 690,
79 => 325,
80 => 689,
81 => 324,
82 => 688,
83 => 323,
84 => 687,
85 => 322,
86 => 686,
87 => 321,
88 => 685,
89 => 320,
90 => 684,
91 => 319,
92 => 683,
93 => 318,
94 => 682,
95 => 317,
96 => 681,
97 => 316,
98 => 680,
99 => 315,
100 => 679,
101 => 314,
102 => 678,
103 => 313,
104 => 677,
105 => 312,
106 => 676,
107 => 311,
108 => 675,
109 => 310,
110 => 674,
111 => 309,
112 => 673,
113 => 308,
114 => 672,
115 => 307,
116 => 671,
117 => 306,
118 => 670,
119 => 305,
120 => 669,
121 => 304,
122 => 668,
123 => 303,
124 => 667,
125 => 302,
126 => 666,
127 => 301,
128 => 665,
129 => 300,
130 => 664,
131 => 299,
132 => 663,
133 => 298,
134 => 662,
135 => 297,
136 => 661,
137 => 296,
138 => 660,
139 => 295,
140 => 659,
141 => 294,
142 => 658,
143 => 293,
144 => 657,
145 => 292,
146 => 656,
147 => 291,
148 => 655,
149 => 290,
150 => 654,
151 => 289,
152 => 653,
153 => 288,
154 => 652,
155 => 287,
156 => 651,
157 => 286,
158 => 650,
159 => 285,
160 => 649,
161 => 284,
162 => 648,
163 => 283,
164 => 647,
165 => 282,
166 => 646,
167 => 281,
168 => 645,
169 => 280,
170 => 644,
171 => 279,
172 => 643,
173 => 278,
174 => 642,
175 => 277,
176 => 641,
177 => 276,
178 => 640,
179 => 275,
180 => 639,
181 => 274,
182 => 638,
183 => 273,
184 => 637,
185 => 272,
186 => 636,
187 => 271,
188 => 635,
189 => 270,
190 => 634,
191 => 269,
192 => 633,
193 => 268,
194 => 632,
195 => 267,
196 => 631,
197 => 266,
198 => 630,
199 => 265,
200 => 629,
201 => 264,
202 => 628,
203 => 263,
204 => 627,
205 => 262,
206 => 626,
207 => 261,
208 => 625,
209 => 260,
210 => 624,
211 => 259,
212 => 623,
213 => 258,
214 => 622,
215 => 257,
216 => 621,
217 => 256,
218 => 620,
219 => 255,
220 => 619,
221 => 254,
222 => 618,
223 => 253,
224 => 617,
225 => 252,
226 => 616,
227 => 251,
228 => 615,
229 => 250,
230 => 614,
231 => 249,
232 => 613,
233 => 248,
234 => 612,
235 => 247,
236 => 611,
237 => 246,
238 => 610,
239 => 245,
240 => 609,
241 => 244,
242 => 608,
243 => 243,
244 => 607,
245 => 242,
246 => 606,
247 => 241,
248 => 605,
249 => 240,
250 => 604,
251 => 239,
252 => 603,
253 => 238,
254 => 602,
255 => 237,
256 => 601,
257 => 236,
258 => 600,
259 => 235,
260 => 599,
261 => 234,
262 => 598,
263 => 233,
264 => 597,
265 => 232,
266 => 596,
267 => 231,
268 => 595,
269 => 230,
270 => 594,
271 => 229,
272 => 593,
273 => 228,
274 => 592,
275 => 227,
276 => 591,
277 => 226,
278 => 590,
279 => 225,
280 => 589,
281 => 224,
282 => 588,
283 => 223,
284 => 587,
285 => 222,
286 => 586,
287 => 221,
288 => 585,
289 => 220,
290 => 584,
291 => 219,
292 => 583,
293 => 218,
294 => 582,
295 => 217,
296 => 581,
297 => 216,
298 => 580,
299 => 215,
300 => 579,
301 => 214,
302 => 578,
303 => 213,
304 => 577,
305 => 212,
306 => 576,
307 => 211,
308 => 575,
309 => 210,
310 => 574,
311 => 209,
312 => 573,
313 => 208,
314 => 572,
315 => 207,
316 => 571,
317 => 206,
318 => 570,
319 => 205,
320 => 569,
321 => 204,
322 => 568,
323 => 203,
324 => 567,
325 => 202,
326 => 566,
327 => 201,
328 => 565,
329 => 200,
330 => 564,
331 => 199,
332 => 563,
333 => 198,
334 => 562,
335 => 197,
336 => 561,
337 => 196,
338 => 560,
339 => 195,
340 => 559,
341 => 194,
342 => 558,
343 => 193,
344 => 557,
345 => 192,
346 => 556,
347 => 191,
348 => 555,
349 => 190,
350 => 554,
351 => 189,
352 => 553,
353 => 188,
354 => 552,
355 => 187,
356 => 551,
357 => 186,
358 => 550,
359 => 185,
360 => 549,
361 => 184,
362 => 548,
363 => 183,
364 => 547,
365 => 182,
366 => 546,
367 => 181,
368 => 545,
369 => 180,
370 => 544,
371 => 179,
372 => 543,
373 => 178,
374 => 542,
375 => 177,
376 => 541,
377 => 176,
378 => 540,
379 => 175,
380 => 539,
381 => 174,
382 => 538,
383 => 173,
384 => 537,
385 => 172,
386 => 536,
387 => 171,
388 => 535,
389 => 170,
390 => 534,
391 => 169,
392 => 533,
393 => 168,
394 => 532,
395 => 167,
396 => 531,
397 => 166,
398 => 530,
399 => 165,
400 => 529,
401 => 164,
402 => 528,
403 => 163,
404 => 527,
405 => 162,
406 => 526,
407 => 161,
408 => 525,
409 => 160,
410 => 524,
411 => 159,
412 => 523,
413 => 158,
414 => 522,
415 => 157,
416 => 521,
417 => 156,
418 => 520,
419 => 155,
420 => 519,
421 => 154,
422 => 518,
423 => 153,
424 => 517,
425 => 152,
426 => 516,
427 => 151,
428 => 515,
429 => 150,
430 => 514,
431 => 149,
432 => 513,
433 => 148,
434 => 512,
435 => 147,
436 => 511,
437 => 146,
438 => 510,
439 => 145,
440 => 509,
441 => 144,
442 => 508,
443 => 143,
444 => 507,
445 => 142,
446 => 506,
447 => 141,
448 => 505,
449 => 140,
450 => 504,
451 => 139,
452 => 503,
453 => 138,
454 => 502,
455 => 137,
456 => 501,
457 => 136,
458 => 500,
459 => 135,
460 => 499,
461 => 134,
462 => 498,
463 => 133,
464 => 497,
465 => 132,
466 => 496,
467 => 131,
468 => 495,
469 => 130,
470 => 494,
471 => 129,
472 => 493,
473 => 128,
474 => 492,
475 => 127,
476 => 491,
477 => 126,
478 => 490,
479 => 125,
480 => 489,
481 => 124,
482 => 488,
483 => 123,
484 => 487,
485 => 122,
486 => 486,
487 => 121,
488 => 485,
489 => 120,
490 => 484,
491 => 119,
492 => 483,
493 => 118,
494 => 482,
495 => 117,
496 => 481,
497 => 116,
498 => 480,
499 => 115,
500 => 479,
501 => 114,
502 => 478,
503 => 113,
504 => 477,
505 => 112,
506 => 476,
507 => 111,
508 => 475,
509 => 110,
510 => 474,
511 => 109,
512 => 473,
513 => 108,
514 => 472,
515 => 107,
516 => 471,
517 => 106,
518 => 470,
519 => 105,
520 => 469,
521 => 104,
522 => 468,
523 => 103,
524 => 467,
525 => 102,
526 => 466,
527 => 101,
528 => 465,
529 => 100,
530 => 464,
531 => 99,
532 => 463,
533 => 98,
534 => 462,
535 => 97,
536 => 461,
537 => 96,
538 => 460,
539 => 95,
540 => 459,
541 => 94,
542 => 458,
543 => 93,
544 => 457,
545 => 92,
546 => 456,
547 => 91,
548 => 455,
549 => 90,
550 => 454,
551 => 89,
552 => 453,
553 => 88,
554 => 452,
555 => 87,
556 => 451,
557 => 86,
558 => 450,
559 => 85,
560 => 449,
561 => 84,
562 => 448,
563 => 83,
564 => 447,
565 => 82,
566 => 446,
567 => 81,
568 => 445,
569 => 80,
570 => 444,
571 => 79,
572 => 443,
573 => 78,
574 => 442,
575 => 77,
576 => 441,
577 => 76,
578 => 440,
579 => 75,
580 => 439,
581 => 74,
582 => 438,
583 => 73,
584 => 437,
585 => 72,
586 => 436,
587 => 71,
588 => 435,
589 => 70,
590 => 434,
591 => 69,
592 => 433,
593 => 68,
594 => 432,
595 => 67,
596 => 431,
597 => 66,
598 => 430,
599 => 65,
600 => 429,
601 => 64,
602 => 428,
603 => 63,
604 => 427,
605 => 62,
606 => 426,
607 => 61,
608 => 425,
609 => 60,
610 => 424,
611 => 59,
612 => 423,
613 => 58,
614 => 422,
615 => 57,
616 => 421,
617 => 56,
618 => 420,
619 => 55,
620 => 419,
621 => 54,
622 => 418,
623 => 53,
624 => 417,
625 => 52,
626 => 416,
627 => 51,
628 => 415,
629 => 50,
630 => 414,
631 => 49,
632 => 413,
633 => 48,
634 => 412,
635 => 47,
636 => 411,
637 => 46,
638 => 410,
639 => 45,
640 => 409,
641 => 44,
642 => 408,
643 => 43,
644 => 407,
645 => 42,
646 => 406,
647 => 41,
648 => 405,
649 => 40,
650 => 404,
651 => 39,
652 => 403,
653 => 38,
654 => 402,
655 => 37,
656 => 401,
657 => 36,
658 => 400,
659 => 35,
660 => 399,
661 => 34,
662 => 398,
663 => 33,
664 => 397,
665 => 32,
666 => 396,
667 => 31,
668 => 395,
669 => 30,
670 => 394,
671 => 29,
672 => 393,
673 => 28,
674 => 392,
675 => 27,
676 => 391,
677 => 26,
678 => 390,
679 => 25,
680 => 389,
681 => 24,
682 => 388,
683 => 23,
684 => 387,
685 => 22,
686 => 386,
687 => 21,
688 => 385,
689 => 20,
690 => 384,
691 => 19,
692 => 383,
693 => 18,
694 => 382,
695 => 17,
696 => 381,
697 => 16,
698 => 380,
699 => 15,
700 => 379,
701 => 14,
702 => 378,
703 => 13,
704 => 377,
705 => 12,
706 => 376,
707 => 11,
708 => 375,
709 => 10,
710 => 374,
711 => 9,
712 => 373,
713 => 8,
714 => 372,
715 => 7,
716 => 371,
717 => 6,
718 => 370,
719 => 5,
720 => 369,
721 => 4,
722 => 368,
723 => 3,
724 => 367,
725 => 2,
726 => 366,
727 => 1,
728 => 365,
729 => 0
);
end index_table;
 
package body index_table is
-- subprogram bodies here
end index_table;
/iota_pow_vhdl/trunk/vhdl_altera_de1/pll.cmp
0,0 → 1,25
--Copyright (C) 1991-2013 Altera Corporation
--Your use of Altera Corporation's design tools, logic functions
--and other software and tools, and its AMPP partner logic
--functions, and any output files from any of the foregoing
--(including device programming or simulation files), and any
--associated documentation or information are expressly subject
--to the terms and conditions of the Altera Program License
--Subscription Agreement, Altera MegaCore Function License
--Agreement, or other applicable license agreement, including,
--without limitation, that your use is for the sole purpose of
--programming logic devices manufactured by Altera and sold by
--Altera or its authorized distributors. Please refer to the
--applicable agreement for further details.
 
 
component pll
PORT
(
areset : IN STD_LOGIC := '0';
inclk0 : IN STD_LOGIC := '0';
c0 : OUT STD_LOGIC ;
c1 : OUT STD_LOGIC ;
locked : OUT STD_LOGIC
);
end component;
/iota_pow_vhdl/trunk/vhdl_altera_de1/pll.ppf
0,0 → 1,12
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE pinplan>
<pinplan intended_family="Cyclone II" variation_name="pll" megafunction_name="ALTPLL" specifies="all_ports">
<global>
<pin name="areset" direction="input" scope="external" />
<pin name="inclk0" direction="input" scope="external" source="clock" />
<pin name="c0" direction="output" scope="external" source="clock" />
<pin name="c1" direction="output" scope="external" source="clock" />
<pin name="locked" direction="output" scope="external" />
 
</global>
</pinplan>
/iota_pow_vhdl/trunk/vhdl_altera_de1/pll.qip
0,0 → 1,5
set_global_assignment -name IP_TOOL_NAME "ALTPLL"
set_global_assignment -name IP_TOOL_VERSION "13.0"
set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "pll.vhd"]
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.cmp"]
set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"]
/iota_pow_vhdl/trunk/vhdl_altera_de1/pll.vhd
0,0 → 1,397
-- megafunction wizard: %ALTPLL%
-- GENERATION: STANDARD
-- VERSION: WM1.0
-- MODULE: altpll
 
-- ============================================================
-- File Name: pll.vhd
-- Megafunction Name(s):
-- altpll
--
-- Simulation Library Files(s):
-- altera_mf
-- ============================================================
-- ************************************************************
-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
--
-- 13.0.1 Build 232 06/12/2013 SP 1 SJ Web Edition
-- ************************************************************
 
 
--Copyright (C) 1991-2013 Altera Corporation
--Your use of Altera Corporation's design tools, logic functions
--and other software and tools, and its AMPP partner logic
--functions, and any output files from any of the foregoing
--(including device programming or simulation files), and any
--associated documentation or information are expressly subject
--to the terms and conditions of the Altera Program License
--Subscription Agreement, Altera MegaCore Function License
--Agreement, or other applicable license agreement, including,
--without limitation, that your use is for the sole purpose of
--programming logic devices manufactured by Altera and sold by
--Altera or its authorized distributors. Please refer to the
--applicable agreement for further details.
 
 
LIBRARY ieee;
USE ieee.std_logic_1164.all;
 
LIBRARY altera_mf;
USE altera_mf.all;
 
ENTITY pll IS
PORT
(
areset : IN STD_LOGIC := '0';
inclk0 : IN STD_LOGIC := '0';
c0 : OUT STD_LOGIC ;
c1 : OUT STD_LOGIC ;
locked : OUT STD_LOGIC
);
END pll;
 
 
ARCHITECTURE SYN OF pll IS
 
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (5 DOWNTO 0);
SIGNAL sub_wire1 : STD_LOGIC ;
SIGNAL sub_wire2 : STD_LOGIC ;
SIGNAL sub_wire3 : STD_LOGIC ;
SIGNAL sub_wire4 : STD_LOGIC ;
SIGNAL sub_wire5 : STD_LOGIC_VECTOR (1 DOWNTO 0);
SIGNAL sub_wire6_bv : BIT_VECTOR (0 DOWNTO 0);
SIGNAL sub_wire6 : STD_LOGIC_VECTOR (0 DOWNTO 0);
 
 
 
COMPONENT altpll
GENERIC (
clk0_divide_by : NATURAL;
clk0_duty_cycle : NATURAL;
clk0_multiply_by : NATURAL;
clk0_phase_shift : STRING;
clk1_divide_by : NATURAL;
clk1_duty_cycle : NATURAL;
clk1_multiply_by : NATURAL;
clk1_phase_shift : STRING;
compensate_clock : STRING;
gate_lock_signal : STRING;
inclk0_input_frequency : NATURAL;
intended_device_family : STRING;
invalid_lock_multiplier : NATURAL;
lpm_hint : STRING;
lpm_type : STRING;
operation_mode : STRING;
port_activeclock : STRING;
port_areset : STRING;
port_clkbad0 : STRING;
port_clkbad1 : STRING;
port_clkloss : STRING;
port_clkswitch : STRING;
port_configupdate : STRING;
port_fbin : STRING;
port_inclk0 : STRING;
port_inclk1 : STRING;
port_locked : STRING;
port_pfdena : STRING;
port_phasecounterselect : STRING;
port_phasedone : STRING;
port_phasestep : STRING;
port_phaseupdown : STRING;
port_pllena : STRING;
port_scanaclr : STRING;
port_scanclk : STRING;
port_scanclkena : STRING;
port_scandata : STRING;
port_scandataout : STRING;
port_scandone : STRING;
port_scanread : STRING;
port_scanwrite : STRING;
port_clk0 : STRING;
port_clk1 : STRING;
port_clk2 : STRING;
port_clk3 : STRING;
port_clk4 : STRING;
port_clk5 : STRING;
port_clkena0 : STRING;
port_clkena1 : STRING;
port_clkena2 : STRING;
port_clkena3 : STRING;
port_clkena4 : STRING;
port_clkena5 : STRING;
port_extclk0 : STRING;
port_extclk1 : STRING;
port_extclk2 : STRING;
port_extclk3 : STRING;
valid_lock_multiplier : NATURAL
);
PORT (
areset : IN STD_LOGIC ;
clk : OUT STD_LOGIC_VECTOR (5 DOWNTO 0);
inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
locked : OUT STD_LOGIC
);
END COMPONENT;
 
BEGIN
sub_wire6_bv(0 DOWNTO 0) <= "0";
sub_wire6 <= To_stdlogicvector(sub_wire6_bv);
sub_wire3 <= sub_wire0(0);
sub_wire1 <= sub_wire0(1);
c1 <= sub_wire1;
locked <= sub_wire2;
c0 <= sub_wire3;
sub_wire4 <= inclk0;
sub_wire5 <= sub_wire6(0 DOWNTO 0) & sub_wire4;
 
altpll_component : altpll
GENERIC MAP (
clk0_divide_by => 1,
clk0_duty_cycle => 50,
clk0_multiply_by => 4,
clk0_phase_shift => "0",
clk1_divide_by => 1,
clk1_duty_cycle => 50,
clk1_multiply_by => 2,
clk1_phase_shift => "0",
compensate_clock => "CLK0",
gate_lock_signal => "NO",
inclk0_input_frequency => 20000,
intended_device_family => "Cyclone II",
invalid_lock_multiplier => 5,
lpm_hint => "CBX_MODULE_PREFIX=pll",
lpm_type => "altpll",
operation_mode => "NORMAL",
port_activeclock => "PORT_UNUSED",
port_areset => "PORT_USED",
port_clkbad0 => "PORT_UNUSED",
port_clkbad1 => "PORT_UNUSED",
port_clkloss => "PORT_UNUSED",
port_clkswitch => "PORT_UNUSED",
port_configupdate => "PORT_UNUSED",
port_fbin => "PORT_UNUSED",
port_inclk0 => "PORT_USED",
port_inclk1 => "PORT_UNUSED",
port_locked => "PORT_USED",
port_pfdena => "PORT_UNUSED",
port_phasecounterselect => "PORT_UNUSED",
port_phasedone => "PORT_UNUSED",
port_phasestep => "PORT_UNUSED",
port_phaseupdown => "PORT_UNUSED",
port_pllena => "PORT_UNUSED",
port_scanaclr => "PORT_UNUSED",
port_scanclk => "PORT_UNUSED",
port_scanclkena => "PORT_UNUSED",
port_scandata => "PORT_UNUSED",
port_scandataout => "PORT_UNUSED",
port_scandone => "PORT_UNUSED",
port_scanread => "PORT_UNUSED",
port_scanwrite => "PORT_UNUSED",
port_clk0 => "PORT_USED",
port_clk1 => "PORT_USED",
port_clk2 => "PORT_UNUSED",
port_clk3 => "PORT_UNUSED",
port_clk4 => "PORT_UNUSED",
port_clk5 => "PORT_UNUSED",
port_clkena0 => "PORT_UNUSED",
port_clkena1 => "PORT_UNUSED",
port_clkena2 => "PORT_UNUSED",
port_clkena3 => "PORT_UNUSED",
port_clkena4 => "PORT_UNUSED",
port_clkena5 => "PORT_UNUSED",
port_extclk0 => "PORT_UNUSED",
port_extclk1 => "PORT_UNUSED",
port_extclk2 => "PORT_UNUSED",
port_extclk3 => "PORT_UNUSED",
valid_lock_multiplier => 1
)
PORT MAP (
areset => areset,
inclk => sub_wire5,
clk => sub_wire0,
locked => sub_wire2
);
 
 
 
END SYN;
 
-- ============================================================
-- CNX file retrieval info
-- ============================================================
-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0"
-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000"
-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "0"
-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz"
-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low"
-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1"
-- Retrieval info: PRIVATE: BANDWIDTH_USE_CUSTOM STRING "0"
-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0"
-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0"
-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0"
-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "1"
-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0"
-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0"
-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0"
-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0"
-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0"
-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "6"
-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1"
-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1"
-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000"
-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000"
-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "200.000000"
-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "100.000000"
-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0"
-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0"
-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1"
-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "1"
-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0"
-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575"
-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1"
-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "50.000"
-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz"
-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000"
-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1"
-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1"
-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz"
-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone II"
-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1"
-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1"
-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1"
-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available"
-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0"
-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg"
-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps"
-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any"
-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0"
-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0"
-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "1"
-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "1"
-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1"
-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "200.00000000"
-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "100.00000000"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz"
-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz"
-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "0"
-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0"
-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000"
-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000"
-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0"
-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg"
-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "ps"
-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0"
-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1"
-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1"
-- Retrieval info: PRIVATE: PLL_ENA_CHECK STRING "0"
-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0"
-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0"
-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0"
-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0"
-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0"
-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0"
-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0"
-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll.mif"
-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0"
-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "0"
-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0"
-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0"
-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0"
-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000"
-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz"
-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500"
-- Retrieval info: PRIVATE: SPREAD_USE STRING "0"
-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0"
-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1"
-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1"
-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1"
-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1"
-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
-- Retrieval info: PRIVATE: USE_CLK0 STRING "1"
-- Retrieval info: PRIVATE: USE_CLK1 STRING "1"
-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0"
-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0"
-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0"
-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0"
-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "1"
-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50"
-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "4"
-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0"
-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "1"
-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50"
-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "2"
-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0"
-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0"
-- Retrieval info: CONSTANT: GATE_LOCK_SIGNAL STRING "NO"
-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "20000"
-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone II"
-- Retrieval info: CONSTANT: INVALID_LOCK_MULTIPLIER NUMERIC "5"
-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll"
-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL"
-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED"
-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED"
-- Retrieval info: CONSTANT: VALID_LOCK_MULTIPLIER NUMERIC "1"
-- Retrieval info: USED_PORT: @clk 0 0 6 0 OUTPUT_CLK_EXT VCC "@clk[5..0]"
-- Retrieval info: USED_PORT: @extclk 0 0 4 0 OUTPUT_CLK_EXT VCC "@extclk[3..0]"
-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]"
-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset"
-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0"
-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1"
-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0"
-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked"
-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0
-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0
-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0
-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0
-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1
-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.vhd TRUE
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.inc FALSE
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.cmp TRUE
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.bsf FALSE
-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_inst.vhd FALSE
-- Retrieval info: LIB_FILE: altera_mf
-- Retrieval info: CBX_MODULE_PREFIX: ON
/iota_pow_vhdl/trunk/vhdl_altera_de1/spi_slave.vhd
0,0 → 1,98
-- IOTA Pearl Diver VHDL Port
--
-- Written 2018 by Thomas Pototschnig <microengineer18@gmail.com>
--
-- This source code is currently licensed under
-- Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
--
-- http://www.microengineer.eu
--
-- If you like my project please consider a donation to
--
-- LLEYMHRKXWSPMGCMZFPKKTHSEMYJTNAZXSAYZGQUEXLXEEWPXUNWBFDWESOJVLHQHXOPQEYXGIRBYTLRWHMJAOSHUY
--
-- As soon as donations reach 1000MIOTA, everything will become
-- GPL and open for any use - commercial included.
 
library ieee;
 
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
 
entity spi_slave is
port
(
clk : in std_logic;
reset : in std_logic;
mosi : in std_logic;
miso : out std_logic;
sck : in std_logic;
ss : in std_logic;
data_rd : in std_logic_vector(31 downto 0);
data_wr : out std_logic_vector(31 downto 0);
data_wren : out std_logic
);
end spi_slave;
 
 
architecture behv of spi_slave is
signal sync_mosi : std_logic_vector(1 downto 0);
signal sync_sck : std_logic_vector(1 downto 0);
signal sync_ss : std_logic_vector(1 downto 0);
 
 
begin
 
process(clk)
variable cnt : integer range 0 to 32 := 0;
variable iwren : std_logic;
variable i_miso : std_logic;
variable i_shiftregister : std_logic_vector(31 downto 0);
 
begin
if rising_edge(clk) then
if reset='1' then
cnt := 0;
data_wren <= '0';
iwren := '0';
else
iwren := '0';
sync_mosi <= sync_mosi(0) & mosi;
sync_sck <= sync_sck(0) & sck;
sync_ss <= sync_ss(0) & ss;
 
case sync_ss is
when "11" =>
i_shiftregister := data_rd;
cnt := 0;
-- i_flip := '0';
when "10" =>
miso <= i_shiftregister(31);
when "01" =>
cnt := 0;
iwren := '1';
data_wr <= i_shiftregister;
when "00" =>
case sync_sck is
when "01" =>
i_shiftregister := i_shiftregister(30 downto 0) & sync_mosi(0);
cnt := cnt + 1;
when "10" =>
miso <= i_shiftregister(31);
when others =>
end case;
when others =>
end case;
data_wren <= iwren;
end if;
end if;
end process;
 
end behv;
/iota_pow_vhdl/trunk/vhdl_cyclone10_lp/output_files/curl-cyclone10.sof Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
iota_pow_vhdl/trunk/vhdl_cyclone10_lp/output_files/curl-cyclone10.sof Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl-cyclone10.qpf =================================================================== --- iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl-cyclone10.qpf (nonexistent) +++ iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl-cyclone10.qpf (revision 4) @@ -0,0 +1,30 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 2017 Intel Corporation. All rights reserved. +# Your use of Intel Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Intel Program License +# Subscription Agreement, the Intel Quartus Prime License Agreement, +# the Intel FPGA IP License Agreement, or other applicable license +# agreement, including, without limitation, that your use is for +# the sole purpose of programming logic devices manufactured by +# Intel and sold by Intel or its authorized distributors. Please +# refer to the applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus Prime +# Version 17.1.0 Build 590 10/25/2017 SJ Lite Edition +# Date created = 10:09:41 April 23, 2018 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "17.1" +DATE = "10:09:41 April 23, 2018" + +# Revisions + +PROJECT_REVISION = "curl-cyclone10" Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl-cyclone10.qsf =================================================================== --- iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl-cyclone10.qsf (nonexistent) +++ iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl-cyclone10.qsf (revision 4) @@ -0,0 +1,112 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 2017 Intel Corporation. All rights reserved. +# Your use of Intel Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Intel Program License +# Subscription Agreement, the Intel Quartus Prime License Agreement, +# the Intel FPGA IP License Agreement, or other applicable license +# agreement, including, without limitation, that your use is for +# the sole purpose of programming logic devices manufactured by +# Intel and sold by Intel or its authorized distributors. Please +# refer to the applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus Prime +# Version 17.1.0 Build 590 10/25/2017 SJ Lite Edition +# Date created = 10:09:41 April 23, 2018 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# curl-cyclone10_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus Prime software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + +set_global_assignment -name FAMILY "Cyclone 10 LP" +set_global_assignment -name DEVICE 10CL025YE144C8G +set_global_assignment -name TOP_LEVEL_ENTITY de1 +set_global_assignment -name ORIGINAL_QUARTUS_VERSION 17.1.0 +set_global_assignment -name PROJECT_CREATION_TIME_DATE "10:09:41 APRIL 23, 2018" +set_global_assignment -name LAST_QUARTUS_VERSION "17.1.0 Lite Edition" +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 2 +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" +set_global_assignment -name VHDL_FILE spi_slave.vhd +set_global_assignment -name VHDL_FILE de1.vhd +set_global_assignment -name VHDL_FILE index_table.vhd +set_global_assignment -name VHDL_FILE curl.vhd +set_global_assignment -name QIP_FILE pll.qip +set_location_assignment PIN_52 -to CLOCK_50 +set_location_assignment PIN_100 -to spi_miso +set_location_assignment PIN_99 -to spi_mosi +set_location_assignment PIN_98 -to spi_sck +set_location_assignment PIN_101 -to spi_ss +set_location_assignment PIN_72 -to reset +set_location_assignment PIN_68 -to led_running +set_location_assignment PIN_66 -to led_overflow +set_location_assignment PIN_67 -to led_found +set_global_assignment -name ENABLE_OCT_DONE OFF +set_global_assignment -name CYCLONEIII_CONFIGURATION_SCHEME "PASSIVE SERIAL" +set_global_assignment -name STRATIXV_CONFIGURATION_SCHEME "PASSIVE SERIAL" +set_global_assignment -name USE_CONFIGURATION_DEVICE OFF +set_global_assignment -name CRC_ERROR_OPEN_DRAIN OFF +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -rise +set_global_assignment -name OUTPUT_IO_TIMING_NEAR_END_VMEAS "HALF VCCIO" -fall +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -rise +set_global_assignment -name OUTPUT_IO_TIMING_FAR_END_VMEAS "HALF SIGNAL SWING" -fall +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVCMOS" +set_global_assignment -name CYCLONEII_RESERVE_NCEO_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_DATA1_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_global_assignment -name RESERVE_FLASH_NCE_AFTER_CONFIGURATION "USE AS REGULAR IO" +set_location_assignment PIN_12 -to ~ALTERA_DCLK~ +set_location_assignment PIN_13 -to ~ALTERA_DATA0~ +set_global_assignment -name AUTO_SHIFT_REGISTER_RECOGNITION AUTO +set_global_assignment -name ALLOW_ANY_ROM_SIZE_FOR_RECOGNITION ON +set_global_assignment -name ALLOW_ANY_RAM_SIZE_FOR_RECOGNITION ON +set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION ON +set_global_assignment -name ALLOW_SHIFT_REGISTER_MERGING_ACROSS_HIERARCHIES ALWAYS +set_global_assignment -name ADV_NETLIST_OPT_SYNTH_WYSIWYG_REMAP ON +set_global_assignment -name REMOVE_REDUNDANT_LOGIC_CELLS OFF +set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE SPEED +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name SMART_RECOMPILE ON +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC ON +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_DUPLICATION ON +set_global_assignment -name PHYSICAL_SYNTHESIS_REGISTER_RETIMING ON +set_global_assignment -name ROUTER_LCELL_INSERTION_AND_LOGIC_DUPLICATION ON +set_global_assignment -name ROUTER_TIMING_OPTIMIZATION_LEVEL MAXIMUM +set_global_assignment -name QII_AUTO_PACKED_REGISTERS "MINIMIZE AREA" +set_global_assignment -name PHYSICAL_SYNTHESIS_ASYNCHRONOUS_SIGNAL_PIPELINING OFF +set_global_assignment -name ROUTER_CLOCKING_TOPOLOGY_ANALYSIS ON +set_global_assignment -name FITTER_EFFORT "AUTO FIT" +set_global_assignment -name MUX_RESTRUCTURE OFF +set_global_assignment -name STATE_MACHINE_PROCESSING "MINIMAL BITS" +set_global_assignment -name PHYSICAL_SYNTHESIS_COMBO_LOGIC_FOR_AREA OFF +set_global_assignment -name PHYSICAL_SYNTHESIS_MAP_LOGIC_TO_MEMORY_FOR_AREA OFF +set_global_assignment -name AUTO_RAM_RECOGNITION ON +set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 4.0 +set_global_assignment -name FITTER_AGGRESSIVE_ROUTABILITY_OPTIMIZATION AUTOMATICALLY +set_global_assignment -name OPTIMIZE_TIMING "NORMAL COMPILATION" +set_global_assignment -name OPTIMIZATION_MODE "AGGRESSIVE AREA" +set_global_assignment -name ALLOW_REGISTER_DUPLICATION OFF +set_global_assignment -name OPTIMIZE_POWER_DURING_FITTING "EXTRA EFFORT" +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl-cyclone10.qws =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl-cyclone10.qws =================================================================== --- iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl-cyclone10.qws (nonexistent) +++ iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl-cyclone10.qws (revision 4)
iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl-cyclone10.qws Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl.vhd =================================================================== --- iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl.vhd (nonexistent) +++ iota_pow_vhdl/trunk/vhdl_cyclone10_lp/curl.vhd (revision 4) @@ -0,0 +1,311 @@ +-- IOTA Pearl Diver VHDL Port +-- +-- Written 2018 by Thomas Pototschnig +-- +-- This source code is currently licensed under +-- Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) +-- +-- http://www.microengineer.eu +-- +-- If you like my project please consider a donation to +-- +-- LLEYMHRKXWSPMGCMZFPKKTHSEMYJTNAZXSAYZGQUEXLXEEWPXUNWBFDWESOJVLHQHXOPQEYXGIRBYTLRWHMJAOSHUY +-- +-- As soon as donations reach 1000MIOTA, everything will become +-- GPL and open for any use - commercial included. + +library ieee; + +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use work.index_table.all; + +entity curl is + generic + ( + HASH_LENGTH : integer := 243; + STATE_LENGTH : integer := 729; -- 3 * HASH_LENGTH; + NONCE_LENGTH : integer := 81; -- HASH_LENGTH / 3; + NUMBER_OF_ROUNDS : integer := 81; + PARALLEL : integer := 7; + INTERN_NONCE_LENGTH : integer := 32; + BITS_MIN_WEIGHT_MAGINUTE_MAX : integer := 26; + DATA_WIDTH : integer := 9 + ); + + port + ( + clk : in std_logic; + clk_slow : in std_logic; + reset : in std_logic; + + spi_data_rx : in std_logic_vector(31 downto 0); + spi_data_tx : out std_logic_vector(31 downto 0); + spi_data_rxen : in std_logic; + overflow : out std_logic; + running : out std_logic; + found : out std_logic + ); + +end curl; + +architecture behv of curl is + +subtype state_vector_type is std_logic_vector(PARALLEL-1 downto 0); +subtype mid_state_vector_type is std_logic_vector(DATA_WIDTH-1 downto 0); + +type curl_state_array is array(integer range <>) of state_vector_type; +type mid_state_array is array(integer range <>) of mid_state_vector_type; + +signal curl_state_low : curl_state_array(STATE_LENGTH-1 downto 0); +signal curl_state_high : curl_state_array(STATE_LENGTH-1 downto 0); + +-- mid state data in 9bit packed format +signal curl_mid_state_low : mid_state_array((STATE_LENGTH/9)-1 downto 0); +signal curl_mid_state_high : mid_state_array((STATE_LENGTH/9)-1 downto 0); + +signal flag_running : std_logic := '0'; +signal flag_overflow : std_logic := '0'; +signal flag_found : std_logic := '0'; +signal flag_start : std_logic := '0'; + +signal binary_nonce : unsigned(INTERN_NONCE_LENGTH-1 downto 0); +signal mask : state_vector_type; +signal min_weight_magnitude : std_logic_vector(BITS_MIN_WEIGHT_MAGINUTE_MAX-1 downto 0); + + +begin + overflow <= flag_overflow; + running <= flag_running; + found <= flag_found; + + process (clk_slow) + -- because it looks prettier + variable spi_cmd : std_logic_vector(5 downto 0); + variable wraddr : integer range 0 to 127 := 0; + begin + if rising_edge(clk_slow) then + if reset='1' then +-- binary_nonce <= (others => '0'); + min_weight_magnitude <= (others => '0'); + flag_start <= '0'; + else + flag_start <= '0'; +-- new spi data received + if spi_data_rxen = '1' then + spi_cmd := spi_data_rx(31 downto 26); + case spi_cmd is + when "000000" => -- nop + when "100001" => -- start / stop + if spi_data_rx(0) = '1' then + flag_start <= '1'; + end if; + when "100101" => -- write to wr address + wraddr := 0; + when "100010" => -- write to mid state + curl_mid_state_low(wraddr) <= std_logic_vector(spi_data_rx(DATA_WIDTH-1 downto 0)); + curl_mid_state_high(wraddr) <= std_logic_vector(spi_data_rx(DATA_WIDTH+8 downto DATA_WIDTH)); + wraddr := wraddr + 1; + when "100100" => + min_weight_magnitude <= spi_data_rx(BITS_MIN_WEIGHT_MAGINUTE_MAX-1 downto 0); + + when "000001" => -- read flags + spi_data_tx <= "00000000000000000000000000000" & flag_overflow & flag_found & flag_running; + +-- this costs an extreme amount of resources +-- interesting only for debugging +-- when "000010" => +-- spi_addr := spi_data_rx(25 downto 16); +-- spi_data_tx(0+PARALLEL-1 downto 0) <= curl_state_low(to_integer(unsigned(spi_addr))); +-- spi_data_tx(8+PARALLEL-1 downto 8) <= curl_state_high(to_integer(unsigned(spi_addr))); + when "000011" => -- read nonce + spi_data_tx(31 downto INTERN_NONCE_LENGTH) <= (others => '0'); + spi_data_tx(INTERN_NONCE_LENGTH-1 downto 0) <= std_logic_vector(binary_nonce); + when "000100" => -- read mask + spi_data_tx(PARALLEL-1 downto 0) <= mask; + spi_data_tx(31 downto PARALLEL) <= (others => '0'); + when "010101" => -- loop back read test inverted bits + spi_data_tx <= not spi_data_rx; + when "000110" => -- read back parallel-level + spi_data_tx <= std_logic_vector(to_unsigned(PARALLEL, spi_data_tx'length)); + when others => + spi_data_tx <= (others => '1'); + end case; + end if; + end if; + end if; + end process; + + process (clk) + variable state : integer range 0 to 31 := 0; + variable round : integer range 0 to 127 := 0; + + variable imask : state_vector_type; + + variable i_min_weight_magnitude : std_logic_vector(BITS_MIN_WEIGHT_MAGINUTE_MAX-1 downto 0); + + -- temporary registers get optimized away + variable alpha : curl_state_array(STATE_LENGTH-1 downto 0); + variable beta : curl_state_array(STATE_LENGTH-1 downto 0); + variable gamma : curl_state_array(STATE_LENGTH-1 downto 0); + variable delta : curl_state_array(STATE_LENGTH-1 downto 0); + variable epsilon : curl_state_array(STATE_LENGTH-1 downto 0); + + variable tmp_index : integer range 0 to 1023; + variable tmp_mod : integer range 0 to 31; + begin + if rising_edge(clk) then + if reset='1' then + state := 0; + flag_found <= '0'; + flag_running <= '0'; + flag_overflow <= '0'; + binary_nonce <= (others => '0'); + else + case state is + when 0 => + flag_running <= '0'; + if flag_start = '1' then + i_min_weight_magnitude := min_weight_magnitude; + state := 1; + end if; + -- nop until start from spi + when 1 => + binary_nonce <= (others => '0'); + flag_found <= '0'; + flag_running <= '1'; + flag_overflow <= '0'; + state := 8; + when 8 => -- copy mid state and insert nonce + -- pipeline adder for speed + binary_nonce <= binary_nonce + 1; + + -- copy and fully expand mid-state to curl-state + for I in 0 to (STATE_LENGTH/DATA_WIDTH)-1 loop + for J in 0 to DATA_WIDTH-1 loop + tmp_index := I*DATA_WIDTH+J; + if tmp_index < 162 or tmp_index > HASH_LENGTH-1 then + if curl_mid_state_low(I)(J) = '1' then + curl_state_low(tmp_index) <= (others => '1'); + else + curl_state_low(tmp_index) <= (others => '0'); + end if; + + if curl_mid_state_high(I)(J) = '1' then + curl_state_high(tmp_index) <= (others => '1'); + else + curl_state_high(tmp_index) <= (others => '0'); + end if; + end if; + end loop; + end loop; + +-- -- generate bitmuster in first two trit-arrays of counter depending from PARALLEL setting +-- -- doesn't need additional resources for pow or division because everything is constant + for J in 0 to 1 loop -- TODO make adjustable ... it's okay up to PARALLEL = 9 + for I in 0 to PARALLEL-1 loop + tmp_mod := (I/(3**J)) mod 3; + if tmp_mod = 0 then + curl_state_low(162+J)(I) <= '1'; + curl_state_high(162+J)(I) <= '1'; + elsif tmp_mod = 1 then + curl_state_low(162+J)(I) <= '0'; + curl_state_high(162+J)(I) <= '1'; + elsif tmp_mod = 2 then + curl_state_low(162+J)(I) <= '1'; + curl_state_high(162+J)(I) <= '0'; + end if; + end loop; + end loop; + + + -- lowest trits for counter from 0 to 4 (for 5bit) +-- curl_state_low(162) <= "01101"; +-- curl_state_high(162) <= "11011"; +-- curl_state_low(163) <= "00111"; +-- curl_state_high(163) <= "11111"; + + -- insert and convert binary nonce to trinary nonce + -- It's a fake trinary nonce but integer-values are strictly monotonously rising + -- with integer values of binary nonce. + -- Doesn't bring the exact same result like reference implementation with real + -- trinary adder - but it doesn't matter and it is way faster. + for I in 164 to 164+INTERN_NONCE_LENGTH-1 loop + if binary_nonce(I-164) = '1' then + curl_state_low(I) <= (others => '1'); + curl_state_high(I) <= (others => '0'); + else + curl_state_low(I) <= (others => '0'); + curl_state_high(I) <= (others => '1'); + end if; + end loop; + + -- fill remaining trits with '11' (=0) + for I in 164+INTERN_NONCE_LENGTH to HASH_LENGTH-1 loop + curl_state_low(I) <= (others => '1'); + curl_state_high(I) <= (others => '1'); + end loop; + + -- initialize round-counter + round := NUMBER_OF_ROUNDS; + + state := 10; + when 10 => -- do the curl hash round without any copying needed + for I in 0 to STATE_LENGTH-1 loop + alpha(I) := curl_state_low(index_table(I)); + beta(I) := curl_state_high(index_table(I)); + gamma(I) := curl_state_high(index_table(I+1)); + + delta(I) := (alpha(I) or (not gamma(I))) and (curl_state_low(index_table(I+1)) xor beta(I)); + + curl_state_low(I) <= not delta(I); + curl_state_high(I) <= (alpha(I) xor gamma(I)) or delta(I); + end loop; + + round := round - 1; + if round = 0 then + state := 16; + end if; + when 16 => -- find out which solution - if any + imask := (others => '1'); + + -- doesn't work like the 2nd variant ... why? TODO^^ + for I in 0 to PARALLEL-1 loop + for J in 0 to BITS_MIN_WEIGHT_MAGINUTE_MAX-1 loop + if i_min_weight_magnitude(J) = '1' and (curl_state_low(HASH_LENGTH - 1 - J)(I) /= '1' or curl_state_high(HASH_LENGTH - 1 - J)(I) /= '1') then + imask(I) := '0'; + end if; + end loop; + end loop; + +-- imask := (others => '1'); +-- for I in 0 to BITS_MIN_WEIGHT_MAGINUTE_MAX-1 loop +-- if i_min_weight_magnitude(I) = '1' then +-- imask := imask and not (curl_state_low(HASH_LENGTH - 1 - I) xor curl_state_high(HASH_LENGTH - 1 - I)); +-- end if; +-- end loop; +-- mask <= imask; + + -- no solution found? + if unsigned(imask) = 0 then + -- is overflow? + if binary_nonce = x"ffffffff" then + flag_overflow <= '1'; + state := 0; + else + state := 8; -- and try again + end if; + else + state := 30; -- nonce found + end if; + when 30 => + mask <= imask; + flag_found <= '1'; + state := 0; + when others => + state := 0; + end case; + end if; + end if; + end process; +end behv; Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/de1.vhd =================================================================== --- iota_pow_vhdl/trunk/vhdl_cyclone10_lp/de1.vhd (nonexistent) +++ iota_pow_vhdl/trunk/vhdl_cyclone10_lp/de1.vhd (revision 4) @@ -0,0 +1,123 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.STD_LOGIC_ARITH.ALL; +use IEEE.STD_LOGIC_UNSIGNED.ALL; + +entity de1 is + port ( + CLOCK_50 : in std_logic; + reset : in std_logic; + led_running : out std_logic; + led_found : out std_logic; + led_overflow : out std_logic; +-- //////////////////////// UART //////////////////////// + spi_mosi : in std_logic; + spi_sck : in std_logic; + spi_ss : in std_logic; + spi_miso : out std_logic + + ); +end; + +architecture beh of de1 is + + + + +signal pll_clk : std_logic; +signal pll_reset : std_logic := '0'; +signal pll_locked : std_logic; + +signal spi_data_tx : std_logic_vector(31 downto 0); +signal spi_data_rx : std_logic_vector(31 downto 0); +signal spi_data_rx_en : std_logic; + + +signal pll_slow : std_logic; + +component spi_slave + port + ( + clk : in std_logic; + reset : in std_logic; + + mosi : in std_logic; + miso : out std_logic; + sck : in std_logic; + ss : in std_logic; + + + data_rd : in std_logic_vector(31 downto 0); + data_wr : out std_logic_vector(31 downto 0); + data_wren : out std_logic + ); +end component; + +component pll + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : out std_logic; + locked : OUT STD_LOGIC + ); +end component; + +component curl + port + ( + clk : in std_logic; + clk_slow : in std_logic; + reset : in std_logic; + + spi_data_rx : in std_logic_vector(31 downto 0); + spi_data_tx : out std_logic_vector(31 downto 0); + spi_data_rxen : in std_logic; + + overflow : out std_logic; + running : out std_logic; + found : out std_logic + ); +end component; + +begin + pll0 : pll port map ( + areset => pll_reset, + inclk0 => CLOCK_50, + c0 => pll_clk, + c1 => pll_slow, + locked => pll_locked + ); + + + spi0 : spi_slave port map ( + clk => pll_slow, + reset => reset, + + mosi => spi_mosi, + miso => spi_miso, + sck => spi_sck, + ss => spi_ss, + + data_rd => spi_data_tx, + data_wr => spi_data_rx, + data_wren => spi_data_rx_en + ); + + curl0 : curl port map ( + clk => pll_clk, + reset => reset, + clk_slow => pll_slow, + + spi_data_rx => spi_data_rx, + spi_data_tx => spi_data_tx, + spi_data_rxen => spi_data_rx_en, + + overflow => led_overflow, + running => led_running, + found => led_found + ); + + +end architecture; \ No newline at end of file Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/index_table.vhd =================================================================== --- iota_pow_vhdl/trunk/vhdl_cyclone10_lp/index_table.vhd (nonexistent) +++ iota_pow_vhdl/trunk/vhdl_cyclone10_lp/index_table.vhd (revision 4) @@ -0,0 +1,747 @@ +library ieee; + +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +package index_table is + +type const_index_table is array ( 0 to 729) of integer range 0 to 728; + constant index_table : const_index_table := ( + 0 => 0, + 1 => 364, + 2 => 728, + 3 => 363, + 4 => 727, + 5 => 362, + 6 => 726, + 7 => 361, + 8 => 725, + 9 => 360, + 10 => 724, + 11 => 359, + 12 => 723, + 13 => 358, + 14 => 722, + 15 => 357, + 16 => 721, + 17 => 356, + 18 => 720, + 19 => 355, + 20 => 719, + 21 => 354, + 22 => 718, + 23 => 353, + 24 => 717, + 25 => 352, + 26 => 716, + 27 => 351, + 28 => 715, + 29 => 350, + 30 => 714, + 31 => 349, + 32 => 713, + 33 => 348, + 34 => 712, + 35 => 347, + 36 => 711, + 37 => 346, + 38 => 710, + 39 => 345, + 40 => 709, + 41 => 344, + 42 => 708, + 43 => 343, + 44 => 707, + 45 => 342, + 46 => 706, + 47 => 341, + 48 => 705, + 49 => 340, + 50 => 704, + 51 => 339, + 52 => 703, + 53 => 338, + 54 => 702, + 55 => 337, + 56 => 701, + 57 => 336, + 58 => 700, + 59 => 335, + 60 => 699, + 61 => 334, + 62 => 698, + 63 => 333, + 64 => 697, + 65 => 332, + 66 => 696, + 67 => 331, + 68 => 695, + 69 => 330, + 70 => 694, + 71 => 329, + 72 => 693, + 73 => 328, + 74 => 692, + 75 => 327, + 76 => 691, + 77 => 326, + 78 => 690, + 79 => 325, + 80 => 689, + 81 => 324, + 82 => 688, + 83 => 323, + 84 => 687, + 85 => 322, + 86 => 686, + 87 => 321, + 88 => 685, + 89 => 320, + 90 => 684, + 91 => 319, + 92 => 683, + 93 => 318, + 94 => 682, + 95 => 317, + 96 => 681, + 97 => 316, + 98 => 680, + 99 => 315, + 100 => 679, + 101 => 314, + 102 => 678, + 103 => 313, + 104 => 677, + 105 => 312, + 106 => 676, + 107 => 311, + 108 => 675, + 109 => 310, + 110 => 674, + 111 => 309, + 112 => 673, + 113 => 308, + 114 => 672, + 115 => 307, + 116 => 671, + 117 => 306, + 118 => 670, + 119 => 305, + 120 => 669, + 121 => 304, + 122 => 668, + 123 => 303, + 124 => 667, + 125 => 302, + 126 => 666, + 127 => 301, + 128 => 665, + 129 => 300, + 130 => 664, + 131 => 299, + 132 => 663, + 133 => 298, + 134 => 662, + 135 => 297, + 136 => 661, + 137 => 296, + 138 => 660, + 139 => 295, + 140 => 659, + 141 => 294, + 142 => 658, + 143 => 293, + 144 => 657, + 145 => 292, + 146 => 656, + 147 => 291, + 148 => 655, + 149 => 290, + 150 => 654, + 151 => 289, + 152 => 653, + 153 => 288, + 154 => 652, + 155 => 287, + 156 => 651, + 157 => 286, + 158 => 650, + 159 => 285, + 160 => 649, + 161 => 284, + 162 => 648, + 163 => 283, + 164 => 647, + 165 => 282, + 166 => 646, + 167 => 281, + 168 => 645, + 169 => 280, + 170 => 644, + 171 => 279, + 172 => 643, + 173 => 278, + 174 => 642, + 175 => 277, + 176 => 641, + 177 => 276, + 178 => 640, + 179 => 275, + 180 => 639, + 181 => 274, + 182 => 638, + 183 => 273, + 184 => 637, + 185 => 272, + 186 => 636, + 187 => 271, + 188 => 635, + 189 => 270, + 190 => 634, + 191 => 269, + 192 => 633, + 193 => 268, + 194 => 632, + 195 => 267, + 196 => 631, + 197 => 266, + 198 => 630, + 199 => 265, + 200 => 629, + 201 => 264, + 202 => 628, + 203 => 263, + 204 => 627, + 205 => 262, + 206 => 626, + 207 => 261, + 208 => 625, + 209 => 260, + 210 => 624, + 211 => 259, + 212 => 623, + 213 => 258, + 214 => 622, + 215 => 257, + 216 => 621, + 217 => 256, + 218 => 620, + 219 => 255, + 220 => 619, + 221 => 254, + 222 => 618, + 223 => 253, + 224 => 617, + 225 => 252, + 226 => 616, + 227 => 251, + 228 => 615, + 229 => 250, + 230 => 614, + 231 => 249, + 232 => 613, + 233 => 248, + 234 => 612, + 235 => 247, + 236 => 611, + 237 => 246, + 238 => 610, + 239 => 245, + 240 => 609, + 241 => 244, + 242 => 608, + 243 => 243, + 244 => 607, + 245 => 242, + 246 => 606, + 247 => 241, + 248 => 605, + 249 => 240, + 250 => 604, + 251 => 239, + 252 => 603, + 253 => 238, + 254 => 602, + 255 => 237, + 256 => 601, + 257 => 236, + 258 => 600, + 259 => 235, + 260 => 599, + 261 => 234, + 262 => 598, + 263 => 233, + 264 => 597, + 265 => 232, + 266 => 596, + 267 => 231, + 268 => 595, + 269 => 230, + 270 => 594, + 271 => 229, + 272 => 593, + 273 => 228, + 274 => 592, + 275 => 227, + 276 => 591, + 277 => 226, + 278 => 590, + 279 => 225, + 280 => 589, + 281 => 224, + 282 => 588, + 283 => 223, + 284 => 587, + 285 => 222, + 286 => 586, + 287 => 221, + 288 => 585, + 289 => 220, + 290 => 584, + 291 => 219, + 292 => 583, + 293 => 218, + 294 => 582, + 295 => 217, + 296 => 581, + 297 => 216, + 298 => 580, + 299 => 215, + 300 => 579, + 301 => 214, + 302 => 578, + 303 => 213, + 304 => 577, + 305 => 212, + 306 => 576, + 307 => 211, + 308 => 575, + 309 => 210, + 310 => 574, + 311 => 209, + 312 => 573, + 313 => 208, + 314 => 572, + 315 => 207, + 316 => 571, + 317 => 206, + 318 => 570, + 319 => 205, + 320 => 569, + 321 => 204, + 322 => 568, + 323 => 203, + 324 => 567, + 325 => 202, + 326 => 566, + 327 => 201, + 328 => 565, + 329 => 200, + 330 => 564, + 331 => 199, + 332 => 563, + 333 => 198, + 334 => 562, + 335 => 197, + 336 => 561, + 337 => 196, + 338 => 560, + 339 => 195, + 340 => 559, + 341 => 194, + 342 => 558, + 343 => 193, + 344 => 557, + 345 => 192, + 346 => 556, + 347 => 191, + 348 => 555, + 349 => 190, + 350 => 554, + 351 => 189, + 352 => 553, + 353 => 188, + 354 => 552, + 355 => 187, + 356 => 551, + 357 => 186, + 358 => 550, + 359 => 185, + 360 => 549, + 361 => 184, + 362 => 548, + 363 => 183, + 364 => 547, + 365 => 182, + 366 => 546, + 367 => 181, + 368 => 545, + 369 => 180, + 370 => 544, + 371 => 179, + 372 => 543, + 373 => 178, + 374 => 542, + 375 => 177, + 376 => 541, + 377 => 176, + 378 => 540, + 379 => 175, + 380 => 539, + 381 => 174, + 382 => 538, + 383 => 173, + 384 => 537, + 385 => 172, + 386 => 536, + 387 => 171, + 388 => 535, + 389 => 170, + 390 => 534, + 391 => 169, + 392 => 533, + 393 => 168, + 394 => 532, + 395 => 167, + 396 => 531, + 397 => 166, + 398 => 530, + 399 => 165, + 400 => 529, + 401 => 164, + 402 => 528, + 403 => 163, + 404 => 527, + 405 => 162, + 406 => 526, + 407 => 161, + 408 => 525, + 409 => 160, + 410 => 524, + 411 => 159, + 412 => 523, + 413 => 158, + 414 => 522, + 415 => 157, + 416 => 521, + 417 => 156, + 418 => 520, + 419 => 155, + 420 => 519, + 421 => 154, + 422 => 518, + 423 => 153, + 424 => 517, + 425 => 152, + 426 => 516, + 427 => 151, + 428 => 515, + 429 => 150, + 430 => 514, + 431 => 149, + 432 => 513, + 433 => 148, + 434 => 512, + 435 => 147, + 436 => 511, + 437 => 146, + 438 => 510, + 439 => 145, + 440 => 509, + 441 => 144, + 442 => 508, + 443 => 143, + 444 => 507, + 445 => 142, + 446 => 506, + 447 => 141, + 448 => 505, + 449 => 140, + 450 => 504, + 451 => 139, + 452 => 503, + 453 => 138, + 454 => 502, + 455 => 137, + 456 => 501, + 457 => 136, + 458 => 500, + 459 => 135, + 460 => 499, + 461 => 134, + 462 => 498, + 463 => 133, + 464 => 497, + 465 => 132, + 466 => 496, + 467 => 131, + 468 => 495, + 469 => 130, + 470 => 494, + 471 => 129, + 472 => 493, + 473 => 128, + 474 => 492, + 475 => 127, + 476 => 491, + 477 => 126, + 478 => 490, + 479 => 125, + 480 => 489, + 481 => 124, + 482 => 488, + 483 => 123, + 484 => 487, + 485 => 122, + 486 => 486, + 487 => 121, + 488 => 485, + 489 => 120, + 490 => 484, + 491 => 119, + 492 => 483, + 493 => 118, + 494 => 482, + 495 => 117, + 496 => 481, + 497 => 116, + 498 => 480, + 499 => 115, + 500 => 479, + 501 => 114, + 502 => 478, + 503 => 113, + 504 => 477, + 505 => 112, + 506 => 476, + 507 => 111, + 508 => 475, + 509 => 110, + 510 => 474, + 511 => 109, + 512 => 473, + 513 => 108, + 514 => 472, + 515 => 107, + 516 => 471, + 517 => 106, + 518 => 470, + 519 => 105, + 520 => 469, + 521 => 104, + 522 => 468, + 523 => 103, + 524 => 467, + 525 => 102, + 526 => 466, + 527 => 101, + 528 => 465, + 529 => 100, + 530 => 464, + 531 => 99, + 532 => 463, + 533 => 98, + 534 => 462, + 535 => 97, + 536 => 461, + 537 => 96, + 538 => 460, + 539 => 95, + 540 => 459, + 541 => 94, + 542 => 458, + 543 => 93, + 544 => 457, + 545 => 92, + 546 => 456, + 547 => 91, + 548 => 455, + 549 => 90, + 550 => 454, + 551 => 89, + 552 => 453, + 553 => 88, + 554 => 452, + 555 => 87, + 556 => 451, + 557 => 86, + 558 => 450, + 559 => 85, + 560 => 449, + 561 => 84, + 562 => 448, + 563 => 83, + 564 => 447, + 565 => 82, + 566 => 446, + 567 => 81, + 568 => 445, + 569 => 80, + 570 => 444, + 571 => 79, + 572 => 443, + 573 => 78, + 574 => 442, + 575 => 77, + 576 => 441, + 577 => 76, + 578 => 440, + 579 => 75, + 580 => 439, + 581 => 74, + 582 => 438, + 583 => 73, + 584 => 437, + 585 => 72, + 586 => 436, + 587 => 71, + 588 => 435, + 589 => 70, + 590 => 434, + 591 => 69, + 592 => 433, + 593 => 68, + 594 => 432, + 595 => 67, + 596 => 431, + 597 => 66, + 598 => 430, + 599 => 65, + 600 => 429, + 601 => 64, + 602 => 428, + 603 => 63, + 604 => 427, + 605 => 62, + 606 => 426, + 607 => 61, + 608 => 425, + 609 => 60, + 610 => 424, + 611 => 59, + 612 => 423, + 613 => 58, + 614 => 422, + 615 => 57, + 616 => 421, + 617 => 56, + 618 => 420, + 619 => 55, + 620 => 419, + 621 => 54, + 622 => 418, + 623 => 53, + 624 => 417, + 625 => 52, + 626 => 416, + 627 => 51, + 628 => 415, + 629 => 50, + 630 => 414, + 631 => 49, + 632 => 413, + 633 => 48, + 634 => 412, + 635 => 47, + 636 => 411, + 637 => 46, + 638 => 410, + 639 => 45, + 640 => 409, + 641 => 44, + 642 => 408, + 643 => 43, + 644 => 407, + 645 => 42, + 646 => 406, + 647 => 41, + 648 => 405, + 649 => 40, + 650 => 404, + 651 => 39, + 652 => 403, + 653 => 38, + 654 => 402, + 655 => 37, + 656 => 401, + 657 => 36, + 658 => 400, + 659 => 35, + 660 => 399, + 661 => 34, + 662 => 398, + 663 => 33, + 664 => 397, + 665 => 32, + 666 => 396, + 667 => 31, + 668 => 395, + 669 => 30, + 670 => 394, + 671 => 29, + 672 => 393, + 673 => 28, + 674 => 392, + 675 => 27, + 676 => 391, + 677 => 26, + 678 => 390, + 679 => 25, + 680 => 389, + 681 => 24, + 682 => 388, + 683 => 23, + 684 => 387, + 685 => 22, + 686 => 386, + 687 => 21, + 688 => 385, + 689 => 20, + 690 => 384, + 691 => 19, + 692 => 383, + 693 => 18, + 694 => 382, + 695 => 17, + 696 => 381, + 697 => 16, + 698 => 380, + 699 => 15, + 700 => 379, + 701 => 14, + 702 => 378, + 703 => 13, + 704 => 377, + 705 => 12, + 706 => 376, + 707 => 11, + 708 => 375, + 709 => 10, + 710 => 374, + 711 => 9, + 712 => 373, + 713 => 8, + 714 => 372, + 715 => 7, + 716 => 371, + 717 => 6, + 718 => 370, + 719 => 5, + 720 => 369, + 721 => 4, + 722 => 368, + 723 => 3, + 724 => 367, + 725 => 2, + 726 => 366, + 727 => 1, + 728 => 365, + 729 => 0 + ); + + +end index_table; + +package body index_table is + -- subprogram bodies here +end index_table; \ No newline at end of file Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.cmp =================================================================== --- iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.cmp (nonexistent) +++ iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.cmp (revision 4) @@ -0,0 +1,25 @@ +--Copyright (C) 2017 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +component pll + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +end component; Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.ppf =================================================================== --- iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.ppf (nonexistent) +++ iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.ppf (revision 4) @@ -0,0 +1,12 @@ + + + + + + + + + + + + Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.qip =================================================================== --- iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.qip (nonexistent) +++ iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.qip (revision 4) @@ -0,0 +1,6 @@ +set_global_assignment -name IP_TOOL_NAME "ALTPLL" +set_global_assignment -name IP_TOOL_VERSION "17.1" +set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{Cyclone 10 LP}" +set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "pll.vhd"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.cmp"] +set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "pll.ppf"] Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.vhd =================================================================== --- iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.vhd (nonexistent) +++ iota_pow_vhdl/trunk/vhdl_cyclone10_lp/pll.vhd (revision 4) @@ -0,0 +1,397 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: pll.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- altera_mf +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 17.1.0 Build 590 10/25/2017 SJ Lite Edition +-- ************************************************************ + + +--Copyright (C) 2017 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY pll IS + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +END pll; + + +ARCHITECTURE SYN OF pll IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (4 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire6_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire6 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + compensate_clock : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + port_extclk0 : STRING; + port_extclk1 : STRING; + port_extclk2 : STRING; + port_extclk3 : STRING; + self_reset_on_loss_lock : STRING; + width_clock : NATURAL + ); + PORT ( + areset : IN STD_LOGIC ; + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (4 DOWNTO 0); + locked : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + sub_wire6_bv(0 DOWNTO 0) <= "0"; + sub_wire6 <= To_stdlogicvector(sub_wire6_bv); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + locked <= sub_wire3; + sub_wire4 <= inclk0; + sub_wire5 <= sub_wire6(0 DOWNTO 0) & sub_wire4; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "AUTO", + clk0_divide_by => 5, + clk0_duty_cycle => 50, + clk0_multiply_by => 14, + clk0_phase_shift => "0", + clk1_divide_by => 5, + clk1_duty_cycle => 50, + clk1_multiply_by => 7, + clk1_phase_shift => "0", + compensate_clock => "CLK0", + inclk0_input_frequency => 20000, + intended_device_family => "Cyclone 10 LP", + lpm_hint => "CBX_MODULE_PREFIX=pll", + lpm_type => "altpll", + operation_mode => "NORMAL", + pll_type => "AUTO", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_USED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_USED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_UNUSED", + port_clk3 => "PORT_UNUSED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + port_extclk0 => "PORT_UNUSED", + port_extclk1 => "PORT_UNUSED", + port_extclk2 => "PORT_UNUSED", + port_extclk3 => "PORT_UNUSED", + self_reset_on_loss_lock => "OFF", + width_clock => 5 + ) + PORT MAP ( + areset => areset, + inclk => sub_wire5, + clk => sub_wire0, + locked => sub_wire3 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "0" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "0" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "140.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "70.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "50.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone 10 LP" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MIRROR_CLK0 STRING "0" +-- Retrieval info: PRIVATE: MIRROR_CLK1 STRING "0" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "140.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "70.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "pll.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLKENA0 STRING "0" +-- Retrieval info: PRIVATE: USE_CLKENA1 STRING "0" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "5" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "14" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "5" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "7" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: COMPENSATE_CLOCK STRING "CLK0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "20000" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone 10 LP" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NORMAL" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "AUTO" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_extclk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "5" +-- Retrieval info: USED_PORT: @clk 0 0 5 0 OUTPUT_CLK_EXT VCC "@clk[4..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL pll_inst.vhd FALSE +-- Retrieval info: LIB_FILE: altera_mf +-- Retrieval info: CBX_MODULE_PREFIX: ON Index: iota_pow_vhdl/trunk/vhdl_cyclone10_lp/spi_slave.vhd =================================================================== --- iota_pow_vhdl/trunk/vhdl_cyclone10_lp/spi_slave.vhd (nonexistent) +++ iota_pow_vhdl/trunk/vhdl_cyclone10_lp/spi_slave.vhd (revision 4) @@ -0,0 +1,82 @@ +library ieee; + +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + + +entity spi_slave is + port + ( + clk : in std_logic; + reset : in std_logic; + + mosi : in std_logic; + miso : out std_logic; + sck : in std_logic; + ss : in std_logic; + + + data_rd : in std_logic_vector(31 downto 0); + data_wr : out std_logic_vector(31 downto 0); + data_wren : out std_logic + + ); +end spi_slave; + + +architecture behv of spi_slave is +signal sync_mosi : std_logic_vector(1 downto 0); +signal sync_sck : std_logic_vector(1 downto 0); +signal sync_ss : std_logic_vector(1 downto 0); + + +begin + + process(clk) + variable cnt : integer range 0 to 32 := 0; + variable iwren : std_logic; + variable i_miso : std_logic; + variable i_shiftregister : std_logic_vector(31 downto 0); + + begin + if rising_edge(clk) then + if reset='1' then + cnt := 0; + data_wren <= '0'; + iwren := '0'; + else + iwren := '0'; + + sync_mosi <= sync_mosi(0) & mosi; + sync_sck <= sync_sck(0) & sck; + sync_ss <= sync_ss(0) & ss; + + case sync_ss is + when "11" => + i_shiftregister := data_rd; + cnt := 0; +-- i_flip := '0'; + when "10" => + miso <= i_shiftregister(31); + when "01" => + cnt := 0; + iwren := '1'; + data_wr <= i_shiftregister; + when "00" => + case sync_sck is + when "01" => + i_shiftregister := i_shiftregister(30 downto 0) & sync_mosi(0); + cnt := cnt + 1; + when "10" => + miso <= i_shiftregister(31); + when others => + end case; + when others => + end case; + data_wren <= iwren; + end if; + end if; + end process; + + +end behv;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.