From 29bb72c4ff6166b2b13339999473bd3f8ff56309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klemens=20Sch=C3=B6lhorn?= Date: Mon, 24 Feb 2020 22:15:34 +0100 Subject: [PATCH] Create 6 bit version for two XC9536XL CPLDs Tested with two BitConnector breakout boards [1]. [1]: https://github.com/1ux/BitConnector --- firmware/alu/CPLD1.ucf | 44 ++++++++++++++++++------------------------ firmware/alu/CPLD1.vhd | 8 ++++---- firmware/alu/CPLD2.ucf | 44 ++++++++++++++++++------------------------ firmware/alu/CPLD2.vhd | 8 ++++---- firmware/alu/alu.xise | 14 +++++++++----- 5 files changed, 55 insertions(+), 63 deletions(-) diff --git a/firmware/alu/CPLD1.ucf b/firmware/alu/CPLD1.ucf index 59c6769..843ada4 100644 --- a/firmware/alu/CPLD1.ucf +++ b/firmware/alu/CPLD1.ucf @@ -1,33 +1,27 @@ -NET "func(0)" LOC = "43"; -NET "func(1)" LOC = "44"; -NET "func(2)" LOC = "1"; -NET "func(3)" LOC = "2"; +NET "func(0)" LOC = "27"; +NET "func(1)" LOC = "28"; +NET "func(2)" LOC = "29"; +NET "func(3)" LOC = "30"; -NET "accu(0)" LOC = "27"; -NET "accu(1)" LOC = "28"; -NET "accu(2)" LOC = "29"; -NET "accu(3)" LOC = "30"; -NET "accu(4)" LOC = "31"; -NET "accu(5)" LOC = "32"; -NET "accu(6)" LOC = "37"; -NET "accu(7)" LOC = "38"; +NET "accu(0)" LOC = "31"; +NET "accu(1)" LOC = "32"; +NET "accu(2)" LOC = "34"; +NET "accu(3)" LOC = "36"; +NET "accu(4)" LOC = "37"; +NET "accu(5)" LOC = "38"; NET "ram(0)" LOC = "39"; NET "ram(1)" LOC = "40"; NET "ram(2)" LOC = "41"; NET "ram(3)" LOC = "42"; -NET "ram(4)" LOC = "5"; -NET "ram(5)" LOC = "6"; -NET "ram(6)" LOC = "7"; -NET "ram(7)" LOC = "8"; +NET "ram(4)" LOC = "43"; +NET "ram(5)" LOC = "44"; -NET "result(0)" LOC = "22"; -NET "result(1)" LOC = "21"; -NET "result(2)" LOC = "20"; -NET "result(3)" LOC = "19"; -NET "result(4)" LOC = "18"; -NET "result(5)" LOC = "16"; -NET "result(6)" LOC = "14"; -NET "result(7)" LOC = "13"; +NET "result(0)" LOC = "23"; +NET "result(1)" LOC = "22"; +NET "result(2)" LOC = "21"; +NET "result(3)" LOC = "20"; +NET "result(4)" LOC = "19"; +NET "result(5)" LOC = "18"; -NET "carry_out" LOC = "3"; +NET "carry_out" LOC = "16"; diff --git a/firmware/alu/CPLD1.vhd b/firmware/alu/CPLD1.vhd index 4b4c68d..9455dd8 100644 --- a/firmware/alu/CPLD1.vhd +++ b/firmware/alu/CPLD1.vhd @@ -5,9 +5,9 @@ use ieee.std_logic_1164.all; entity CPLD1 is port ( func: in std_logic_vector(3 downto 0); - accu: in std_logic_vector(7 downto 0); - ram: in std_logic_vector(7 downto 0); - result: out std_logic_vector(7 downto 0); + accu: in std_logic_vector(5 downto 0); + ram: in std_logic_vector(5 downto 0); + result: out std_logic_vector(5 downto 0); carry_out: out std_logic ); end CPLD1; @@ -16,7 +16,7 @@ architecture rtl of CPLD1 is begin alu: entity work.alu generic map ( - WIDTH => 8, + WIDTH => 6, FIRST => true ) port map ( func => func, diff --git a/firmware/alu/CPLD2.ucf b/firmware/alu/CPLD2.ucf index 4496eb5..8ecdea7 100644 --- a/firmware/alu/CPLD2.ucf +++ b/firmware/alu/CPLD2.ucf @@ -1,33 +1,27 @@ -NET "func(0)" LOC = "44"; -NET "func(1)" LOC = "43"; -NET "func(2)" LOC = "42"; -NET "func(3)" LOC = "41"; +NET "func(0)" LOC = "27"; +NET "func(1)" LOC = "28"; +NET "func(2)" LOC = "29"; +NET "func(3)" LOC = "30"; -NET "accu(8)" LOC = "27"; -NET "accu(9)" LOC = "28"; -NET "accu(10)" LOC = "29"; -NET "accu(11)" LOC = "30"; -NET "accu(12)" LOC = "31"; -NET "accu(13)" LOC = "32"; -NET "accu(14)" LOC = "37"; -NET "accu(15)" LOC = "38"; +NET "accu(6)" LOC = "31"; +NET "accu(7)" LOC = "32"; +NET "accu(8)" LOC = "34"; +NET "accu(9)" LOC = "36"; +NET "accu(10)" LOC = "37"; +NET "accu(11)" LOC = "38"; -NET "ram(8)" LOC = "39"; -NET "ram(9)" LOC = "40"; -NET "ram(10)" LOC = "2"; -NET "ram(11)" LOC = "3"; -NET "ram(12)" LOC = "5"; -NET "ram(13)" LOC = "6"; -NET "ram(14)" LOC = "7"; -NET "ram(15)" LOC = "8"; +NET "ram(6)" LOC = "39"; +NET "ram(7)" LOC = "40"; +NET "ram(8)" LOC = "41"; +NET "ram(9)" LOC = "42"; +NET "ram(10)" LOC = "43"; +NET "ram(11)" LOC = "44"; +NET "result(6)" LOC = "23"; +NET "result(7)" LOC = "22"; NET "result(8)" LOC = "21"; NET "result(9)" LOC = "20"; NET "result(10)" LOC = "19"; NET "result(11)" LOC = "18"; -NET "result(12)" LOC = "16"; -NET "result(13)" LOC = "14"; -NET "result(14)" LOC = "13"; -NET "result(15)" LOC = "12"; -NET "carry_in" LOC = "33"; +NET "carry_in" LOC = "16"; diff --git a/firmware/alu/CPLD2.vhd b/firmware/alu/CPLD2.vhd index 6b30acb..90cc36a 100644 --- a/firmware/alu/CPLD2.vhd +++ b/firmware/alu/CPLD2.vhd @@ -5,10 +5,10 @@ use ieee.std_logic_1164.all; entity CPLD2 is port ( func: in std_logic_vector(3 downto 0); - accu: in std_logic_vector(15 downto 8); - ram: in std_logic_vector(15 downto 8); + accu: in std_logic_vector(11 downto 6); + ram: in std_logic_vector(11 downto 6); carry_in: in std_logic; - result: out std_logic_vector(15 downto 8) + result: out std_logic_vector(11 downto 6) ); end CPLD2; @@ -16,7 +16,7 @@ architecture rtl of CPLD2 is begin alu: entity work.alu generic map ( - WIDTH => 8, + WIDTH => 6, FIRST => false ) port map ( func => func, diff --git a/firmware/alu/alu.xise b/firmware/alu/alu.xise index 53884d1..37d5e63 100644 --- a/firmware/alu/alu.xise +++ b/firmware/alu/alu.xise @@ -42,6 +42,9 @@ + + + @@ -61,7 +64,7 @@ - + @@ -99,7 +102,7 @@ - + @@ -119,8 +122,8 @@ - - + + @@ -152,7 +155,7 @@ - + @@ -250,6 +253,7 @@ +