A neuromorphic computing system configured to be trained using unsupervised learning, the neuromorphic computing system comprising a N x M grid of locally connected cells implementing a Self-Organizing Map (SOM) -like artificial neural network, wherein each cell having initial weights and being connected to its direct closest neighbors, the neuromorphic computing system comprising a clock system providing periodic active clock edges, the neuromorphic computing system further comprising means configured to simultaneously and synchronously in each cell: - at a first active clock edge: (a1) receiving a same multidimensional input data ; (b1) calculating an Euclidean distance value between the initial cell weights and said multidimensional input data ; and (c1) setting an initial Manhattan distance value ; - iteratively at each of the next N+M-2 active clock edges: (d1) comparing the Euclidean distance value calculated at the previous active clock edge to the Euclidean distance values of the direct closest neighbors, to determine the minimum Euclidean distance value ; and (e1) if the minimum Euclidian distance value is different from the Euclidean distance value of said cell : updating the Euclidean distance value of said cell by the minimum Euclidean distance value, and updating the Manhattan distance value of said cell to a value represented by the number of clock cycles since the iterative process ; - at a next (N+M-2)+1 active clock edge: (f1) updating the cell weights using an unsupervised learning rule. - at a first active clock edge: (a1) receiving a same multidimensional input data ; (b1) calculating an Euclidean distance value between the initial cell weights and said multidimensional input data ; and (c1) setting an initial Manhattan distance value ; (a1) receiving a same multidimensional input data ; (b1) calculating an Euclidean distance value between the initial cell weights and said multidimensional input data ; and (c1) setting an initial Manhattan distance value ; - iteratively at each of the next N+M-2 active clock edges: (d1) comparing the Euclidean distance value calculated at the previous active clock edge to the Euclidean distance values of the direct closest neighbors, to determine the minimum Euclidean distance value ; and (e1) if the minimum Euclidian distance value is different from the Euclidean distance value of said cell : updating the Euclidean distance value of said cell by the minimum Euclidean distance value, and updating the Manhattan distance value of said cell to a value represented by the number of clock cycles since the iterative process ; (d1) comparing the Euclidean distance value calculated at the previous active clock edge to the Euclidean distance values of the direct closest neighbors, to determine the minimum Euclidean distance value ; and (e1) if the minimum Euclidian distance value is different from the Euclidean distance value of said cell : updating the Euclidean distance value of said cell by the minimum Euclidean distance value, and updating the Manhattan distance value of said cell to a value represented by the number of clock cycles since the iterative process ; - at a next (N+M-2)+1 active clock edge: (f1) updating the cell weights using an unsupervised learning rule. <EOS>