]> rtime.felk.cvut.cz Git - fpga/virtex2/uart.git/blobdiff - openMSP430_uart.vhd
Added custom openMSP430 peripheral as an interface to the quadcount module.
[fpga/virtex2/uart.git] / openMSP430_uart.vhd
index b1d2a571507f7b4fad44160d0afa5ed245617b80..cbcd0ef237ccd422b141c780fd23f8a9cd9dea9b 100644 (file)
@@ -152,6 +152,22 @@ architecture rtl of openMSP430_uart is
     );
   end component;
 
+  component omsp_quadcount is
+    port (
+      mclk        : in  std_logic;
+      per_addr    : in  std_logic_vector (7  downto 0);
+      per_din     : in  std_logic_vector (15 downto 0);  -- unused
+      per_en      : in  std_logic;
+      per_wen     : in  std_logic_vector (1  downto 0);  -- unused
+      puc         : in  std_logic;                       -- unused
+      per_irq_acc : in  std_logic;                       -- unused
+      per_irq     : out std_logic;                       -- unused
+      per_dout    : out std_logic_vector (15 downto 0);
+      
+      qcount      : in  std_logic_vector (31 downto 0)
+    );
+  end component;
+
 
   signal mclk : std_logic;
   signal puc : std_logic;
@@ -180,6 +196,10 @@ architecture rtl of openMSP430_uart is
 
   signal gpio_per_dout : std_logic_vector (15 downto 0);
   signal timerA_per_dout : std_logic_vector (15 downto 0);
+  signal omsp_quadcount_dout : std_logic_vector (15 downto 0);
+
+  signal irq_ta0 : std_logic;
+  signal irq_ta1 : std_logic;
 
 --------------------------------------------------------------------------------
 
@@ -192,7 +212,7 @@ begin
     dmem_cen      => dmem_cen,
     dmem_din      => dmem_din,
     dmem_wen      => dmem_wen,
-    irq_acc       => open,
+    irq_acc       => irq_acc,
     mclk          => mclk,
     per_addr      => per_addr,
     per_din       => per_din,
@@ -208,7 +228,7 @@ begin
     dbg_uart_rxd  => '0',
     dco_clk       => CLK_24MHz,
     dmem_dout     => dmem_dout,
-    irq           => (others => '0'),
+    irq           => irq,
     lfxt_clk      => '0',
     nmi           => '0',
     per_dout      => per_dout,
@@ -301,8 +321,8 @@ begin
     );
 
   omsp_timerA_0 : omsp_timerA port map (
-    irq_ta0     => open,
-    irq_ta1     => open,
+    irq_ta0     => irq_ta0,
+    irq_ta1     => irq_ta1,
     per_dout    => timerA_per_dout,
     ta_out0     => open,
     ta_out0_en  => open,
@@ -314,7 +334,7 @@ begin
     aclk_en     => aclk_en,
     dbg_freeze  => '0',
     inclk       => '0',
-    irq_ta0_acc => '0',
+    irq_ta0_acc => irq_acc (9),
     mclk        => mclk,
     per_addr    => per_addr,
     per_din     => per_din,
@@ -323,7 +343,7 @@ begin
     puc         => puc,
     smclk_en    => smclk_en,
     ta_cci0a    => '0',
-    ta_cci0b    => '0',
+    ta_cci0b    => TXD,
     ta_cci1a    => '0',
     ta_cci1b    => '0',
     ta_cci2a    => '0',
@@ -331,9 +351,27 @@ begin
     taclk       => '0'
   );
 
+  omsp_quadcount_0 : omsp_quadcount port map (
+    mclk        => mclk,
+    per_addr    => per_addr,
+    per_din     => (others => '0'),
+    per_en      => per_en,
+    per_wen     => "00",
+    puc         => '0',
+    per_irq_acc => '0',
+    per_irq     => open,
+    per_dout    => omsp_quadcount_dout,
+    
+    qcount      => X"0001E240" -- 123456
+  );
+
 --------------------------------------------------------------------------------
 
-  per_dout <=  gpio_per_dout or timerA_per_dout;
+  per_dout <=  gpio_per_dout or timerA_per_dout or omsp_quadcount_dout;
+  
+  irq <= (9 => irq_ta0,
+          8 => irq_ta1,
+          others => '0');
   
 end rtl;