source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Comparator/src/Comparator_vhdl_xilinx_body.cpp @ 116

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

1) added a generic multiplier (systemC isn't working with 8bits)
2) added a partial functionnal unit vhdl.

  • Property svn:keywords set to Id
File size: 2.1 KB
Line 
1#ifdef VHDL
2/*
3 * $Id: Comparator_vhdl_xilinx_body.cpp 116 2009-04-30 13:51:41Z moulu $
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Generic/Comparator/include/Comparator.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace generic {
14namespace comparator {
15
16
17#undef  FUNCTION
18#define FUNCTION "Comparator::vhdl_xilinx_body"
19  void Comparator::vhdl_xilinx_body (Vhdl * & vhdl)
20  {
21    log_begin(Comparator,FUNCTION);
22    vhdl->set_body (0,"ins_c_compare_v9_0 : c_compare_v9_0");
23    vhdl->set_body (1,"generic map (");
24    vhdl->set_body (2,"c_width      => "+toString(_param->_size_data)+",");
25    vhdl->set_body (2,"c_data_type  => "+toString(!_param->_is_signed)+",  -- 0 = signed, 1 = unsigned");
26    std::string print_res_pin = "";
27    switch (_param->_type)
28      {
29      case COMPARATOR_EQUAL :
30        vhdl->set_body (2,"c_has_a_eq_b => 1)");
31        print_res_pin = "a_eq_b";
32        break;
33      case COMPARATOR_NOT_EQUAL :
34        vhdl->set_body (2,"c_has_a_eq_b => 0,");
35        vhdl->set_body (2,"c_has_a_ne_b => 1)");
36        print_res_pin = "a_ne_b";
37        break;
38      case COMPARATOR_GREATER :
39        vhdl->set_body (2,"c_has_a_eq_b => 0,");
40        vhdl->set_body (2,"c_has_a_gt_b => 1)");
41        print_res_pin = "a_gt_b";
42        break;
43      case COMPARATOR_GREATER_OR_EQUAL :
44        vhdl->set_body (2,"c_has_a_eq_b => 0,");
45        vhdl->set_body (2,"c_has_a_ge_b => 1)");
46        print_res_pin = "a_ge_b";
47        break;
48      case COMPARATOR_LESS :
49        vhdl->set_body (2,"c_has_a_eq_b => 0,");
50        vhdl->set_body (2,"c_has_a_lt_b => 1)");
51        print_res_pin = "a_lt_b";
52        break;
53      case COMPARATOR_LESS_OR_EQUAL :
54        vhdl->set_body (2,"c_has_a_eq_b => 0,");
55        vhdl->set_body (2,"c_has_a_le_b => 1)");
56        print_res_pin = "a_le_b";
57        break;
58      }
59   
60    vhdl->set_body (1,"port map (");
61    vhdl->set_body (2,"a => in_COMPARE_DATA_0,");
62    vhdl->set_body (2,"b => in_COMPARE_DATA_1,");
63    vhdl->set_body (2,print_res_pin+" => out_COMPARE_TEST);");
64   
65    log_end(Comparator,FUNCTION);
66  };
67
68}; // end namespace comparator
69}; // end namespace generic
70
71}; // end namespace behavioural
72}; // end namespace morpheo             
73#endif
Note: See TracBrowser for help on using the repository browser.