如何使用数组字段创建记录而不在VHDL中定义数组的类型?

时间:2016-06-20 11:32:45

标签: vhdl

我可以写:

type record0 is record
    bit2 : array (0 to 1) of bit;
end record;

但我想在没有定义type mark expected in a subtype indication 的情况下这样做,因为我不需要它,例如:

Button btnRemove = new Button("Remove");
btnRemove.setMinWidth(85);

btnRemove.setOnAction(new EventHandler<ActionEvent>() {

    @Override
    public void handle(ActionEvent t) {
        if(mediaTable.getSelectionModel().isEmpty()){
        txtNotification.setText("Please select an item from the list");
        }
        else{
        medium.remove(mediaTable.getSelectionModel().getSelectedItem());
        }
    }
});

但如果我尝试,GHDL 0.34说:

    scene.setOnKeyReleased(new EventHandler<KeyEvent>() {
        @Override
        public void handle(KeyEvent event) {
            System.out.println(event.getCode());
            if("DELETE".equals(event.getCode())) {
                System.out.println("ATTEMPT ----");
                btnRemove.fire();
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

您只是错误地声明了数组实例。而不是

type bit2_t is array (0 to 1) of bit;
type record0 is record
  bit2 : array (0 to 1) of bit;
end record;

您需要使用

type bit2_t is array (integer range <>) of bit;
type record0 is record
  bit2 : bit2_t(0 to 1);
end record;

如果你想要一个2位的位数组,你可以使用

type bit2_t is array (0 to 1) of bit;
type bit2_array_t is array (integer range <>) of bit2_t;
type record0 is record
  bit2 : bit2_array_t(0 to 7);  -- '7' or whatever your range needs to be
end record;

您可以通过将7更改为bit2 : bit2_array_t(0 to BIT2_ARRAY_LENGTH-1);之类的常量来使其更加通用。

如果你想让某种记录类型以某种方式表示化,那么据我所知你只能使用包泛型实现这一点,如this answer中所述。您的代码将使用所描述的包,并且此包将声明您的记录类型,其数组大小基于generic参数。通过在每种情况下使用generic的不同值来实例化包,您的record可以针对这些不同的情况使用不同的元素大小。

我会注意到,我不相信包装泛型被综合工具广泛支持。