From 6178d91ac2d6f6ca05fc7b68cfb04ed635f56c9d Mon Sep 17 00:00:00 2001 From: Staf Verhaegen Date: Sun, 7 Jul 2019 18:29:06 +0200 Subject: [PATCH] IDCODE: - provide default manufacturer ID that is invalid according to spec - provide default for all MANUFACTURER, PART_NUMBER and VERSION --- rtl/vhdl/c4m_jtag_idblock.vhdl | 6 +++--- rtl/vhdl/c4m_jtag_pkg.vhdl | 18 ++++++++++++------ rtl/vhdl/c4m_jtag_tap_controller.vhdl | 13 +++++-------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/rtl/vhdl/c4m_jtag_idblock.vhdl b/rtl/vhdl/c4m_jtag_idblock.vhdl index 4c06bef..303959a 100644 --- a/rtl/vhdl/c4m_jtag_idblock.vhdl +++ b/rtl/vhdl/c4m_jtag_idblock.vhdl @@ -9,9 +9,9 @@ entity c4m_jtag_idblock is generic ( IR_WIDTH: integer := 2; - PART_NUMBER: std_logic_vector(15 downto 0); - VERSION: std_logic_vector(3 downto 0) := "0100"; - MANUFACTURER: std_logic_vector(10 downto 0) + MANUFACTURER: std_logic_vector(10 downto 0) := "10001111111"; + PART_NUMBER: std_logic_vector(15 downto 0) := "0000000000000001"; + VERSION: std_logic_vector(3 downto 0) := "0000" ); port ( -- needed TAP signals diff --git a/rtl/vhdl/c4m_jtag_pkg.vhdl b/rtl/vhdl/c4m_jtag_pkg.vhdl index e009d23..5ac343f 100644 --- a/rtl/vhdl/c4m_jtag_pkg.vhdl +++ b/rtl/vhdl/c4m_jtag_pkg.vhdl @@ -68,9 +68,11 @@ package c4m_jtag is generic ( IR_WIDTH: integer := 2; - PART_NUMBER: std_logic_vector(15 downto 0); - VERSION: std_logic_vector(3 downto 0) := "0000"; - MANUFACTURER: std_logic_vector(10 downto 0) + -- The default MANUFACTURING ID is not representing a valid + -- manufacturer according to the JTAG standard + MANUFACTURER: std_logic_vector(10 downto 0) := "10001111111"; + PART_NUMBER: std_logic_vector(15 downto 0) := "0000000000000001"; + VERSION: std_logic_vector(3 downto 0) := "0000" ); port ( -- needed TAP signals @@ -146,10 +148,14 @@ package c4m_jtag is component c4m_jtag_tap_controller is generic ( - IR_WIDTH: integer := 2; - IOS: integer := 1; + IR_WIDTH: integer := 2; + IOS: integer := 1; - VERSION: std_logic_vector(3 downto 0) := "0000" + -- The default MANUFACTURING ID is not representing a valid + -- manufacturer according to the JTAG standard + MANUFACTURER: std_logic_vector(10 downto 0) := "10001111111"; + PART_NUMBER: std_logic_vector(15 downto 0) := "0000000000000001"; + VERSION: std_logic_vector(3 downto 0) := "0000" ); port ( -- The TAP signals diff --git a/rtl/vhdl/c4m_jtag_tap_controller.vhdl b/rtl/vhdl/c4m_jtag_tap_controller.vhdl index 5c2d6dc..57a8625 100644 --- a/rtl/vhdl/c4m_jtag_tap_controller.vhdl +++ b/rtl/vhdl/c4m_jtag_tap_controller.vhdl @@ -8,10 +8,12 @@ use work.c4m_jtag.ALL; entity c4m_jtag_tap_controller is generic ( - IR_WIDTH: integer := 2; - IOS: integer := 1; + IR_WIDTH: integer := 2; + IOS: integer := 1; - VERSION: std_logic_vector(3 downto 0) + MANUFACTURER: std_logic_vector(10 downto 0) := "10001111111"; + PART_NUMBER: std_logic_vector(15 downto 0) := "0000000000000001"; + VERSION: std_logic_vector(3 downto 0) := "0000" ); port ( -- The TAP signals @@ -56,11 +58,6 @@ architecture rtl of c4m_jtag_tap_controller is signal IO_TDO: std_logic; signal IO_TDO_EN: std_logic; signal EN: std_logic_vector(2 downto 0) := "000"; - - -- TODO: Automate PART_NUMBER generation - constant PART_NUMBER: std_logic_vector(15 downto 0) := "0000000010001001"; - -- TODO: Get manufacturer ID - constant MANUFACTURER: std_logic_vector(10 downto 0) := "00000000000"; begin STATE <= S_STATE; NEXT_STATE <= S_NEXT_STATE; -- 2.30.2