source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_vhdl_declaration.cpp @ 103

Last change on this file since 103 was 103, checked in by moulu, 15 years ago

1) write queue vhdl
2) bug fix : in generic queue

  • Property svn:keywords set to Id
File size: 2.5 KB
Line 
1#ifdef VHDL
2/*
3 * $Id: Queue_vhdl_declaration.cpp 103 2009-01-16 16:55:32Z moulu $
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Generic/Queue/include/Queue.h"
10
11namespace morpheo {
12namespace behavioural {
13namespace generic {
14namespace queue {
15
16
17#undef  FUNCTION
18#define FUNCTION "Queue::vhdl_declaration"
19  void Queue::vhdl_declaration (Vhdl * & vhdl)
20  {
21    log_printf(FUNC,Queue,FUNCTION,"Begin");
22
23    vhdl->set_type    ("Tqueue","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_data));
24   
25    vhdl->set_signal  ("reg_DATA             ", "Tqueue");
26
27    vhdl->set_signal  ("signal_READ          ", 1);
28    vhdl->set_signal  ("signal_WRITE         ", 1);
29    vhdl->set_signal  ("signal_EMPTY         ", 1);
30    vhdl->set_signal  ("signal_FULL          ", 1);
31
32    if (_param->_size_queue > 1)
33      {
34    vhdl->set_signal  ("reg_PTR_READ         ", log2(_param->_size_queue));
35    vhdl->set_signal  ("signal_NEXT_PTR_READ ", log2(_param->_size_queue));
36    vhdl->set_signal  ("signal_PTR_READ      ", log2(_param->_size_queue));
37    vhdl->set_signal  ("signal_PTR_WRITE     ", log2(_param->_size_queue));
38      }
39
40    if (_param->_nb_port_slot>0)
41    for (uint32_t i=0; i<_param->_nb_port_slot; ++i)
42    vhdl->set_signal  ("signal_SLOT_"+toString(i)+"_VAL", 1);
43
44    if (_param->_nb_port_slot>1)
45      {
46    vhdl->set_signal  ("reg_NB_ELT           ", log2(_param->_size_queue+1));
47    vhdl->set_signal  ("signal_NEXT_NB_ELT   ", log2(_param->_size_queue+1));
48    for (uint32_t i=0; i<_param->_nb_port_slot; ++i)
49    vhdl->set_signal  ("signal_SLOT_"+toString(i), log2(_param->_size_queue));
50      }
51    else
52      {
53    if (_param->_size_queue > 1)
54      {
55    vhdl->set_signal  ("reg_PTR_WRITE        ", log2(_param->_size_queue));
56    vhdl->set_signal  ("signal_NEXT_PTR_WRITE", log2(_param->_size_queue));
57      }
58    vhdl->set_signal  ("reg_FULL             ", 1);
59    vhdl->set_signal  ("reg_EMPTY            ", 1);
60    vhdl->set_signal  ("signal_NEXT_FULL     ", 1);
61    vhdl->set_signal  ("signal_NEXT_EMPTY    ", 1);
62    vhdl->set_signal  ("signal_PTR_EQUAL     ", 1);
63      }
64
65    if (_param->_size_queue > 1)
66      {
67        vhdl->set_constant("const_PTR_INIT       ", log2(_param->_size_queue), 0);
68        if (is_log2(_param->_size_queue) == false)
69          vhdl->set_constant("const_PTR_MAX        ", log2(_param->_size_queue), _param->_size_queue-1);
70      }
71    log_printf(FUNC,Queue,FUNCTION,"End");
72  };
73
74}; // end namespace queue
75}; // end namespace generic
76}; // end namespace behavioural
77}; // end namespace morpheo             
78#endif
Note: See TracBrowser for help on using the repository browser.