IDCODE:
authorStaf Verhaegen <staf@stafverhaegen.be>
Sun, 7 Jul 2019 16:29:06 +0000 (18:29 +0200)
committerStaf Verhaegen <staf@stafverhaegen.be>
Sun, 7 Jul 2019 19:00:30 +0000 (21:00 +0200)
- 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
rtl/vhdl/c4m_jtag_pkg.vhdl
rtl/vhdl/c4m_jtag_tap_controller.vhdl

index 4c06befd405abc145ed49f45cc87ac59b6c61366..303959aed81a74e9fa3dc9c97d7e36914d9280d1 100644 (file)
@@ -9,9 +9,9 @@ entity c4m_jtag_idblock is
   generic (
     IR_WIDTH:           integer := 2;
     
   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
   );
   port (
     -- needed TAP signals
index e009d23b02c0325f9072de6b361cd4a5b9acf0b2..5ac343f52824ab2dd7bd4622201cd0f278ce21a2 100644 (file)
@@ -68,9 +68,11 @@ package c4m_jtag is
     generic (
       IR_WIDTH:         integer := 2;
     
     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
     );
     port (
       -- needed TAP signals
@@ -146,10 +148,14 @@ package c4m_jtag is
 
   component c4m_jtag_tap_controller is
     generic (
 
   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
     );
     port (
       -- The TAP signals
index 5c2d6dcb0a480567905ef9c80622bbb9e4fb773e..57a86256513cc2226c4811d00b62229a80828cc6 100644 (file)
@@ -8,10 +8,12 @@ use work.c4m_jtag.ALL;
 
 entity c4m_jtag_tap_controller is
   generic (
 
 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
   );
   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";
   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;
 begin
   STATE <= S_STATE;
   NEXT_STATE <= S_NEXT_STATE;