最适合Pad Strings的字符

时间:2013-12-16 21:47:13

标签: string character special-characters padding vhdl

填充字符串时最合适的字符是什么(最好是0到127范围)?我希望/更喜欢它是一个非打印字符,并且没有与之关联的ascii symbol

我试过NUL,但这似乎意味着一个字符串的结尾(在它之后没有打印,因此名称为“null终结符”)。似乎有一个PAD(128)字符,但我不确定它的具体用途,我必须手动将该范围的字符添加到我的font library。添加完整的(0-255)字符范围并不仅仅是一些额外的工作。

Space (32)字符可以使用但是当有这么多专业字符时它似乎不是最佳做法。可能是一个不占空间的角色。

我在VHDL中这样做,因此可用的字符在ISO-8859-1 table中。您还可以查看this document

中的字符类型(VHDL)

2 个答案:

答案 0 :(得分:2)

如果使用固定长度类型string(1 to LEN),我会建议填充字符串中的任何一个字符:

  • NUL角色:
    • 优点:字符串函数可以对“实际”内容进行操作,即第一个NUL字符之前的任何内容。
    • 缺点:ModelSim不能很好地呈现字符串,因为它还显示了所有NUL字符。
  • ''(空格):
    • 优点:Nice ModelSim演示文稿。
    • 缺点:字符串操作必须检查最后的所有空格。

因此,基于此,用于固定长度字符串的填充字符取决于字符串的使用方式。

使用固定长度VHDL字符串类型(string(1 to LEN))的替代方法是使用line“textio”中声明为package的{​​{1}}类型。然后,行是一个字符串的“指针”,在VHDL中称为type line is access string;类型,并且引用的字符串只能以所需的长度创建,因此可以避免填充。的问题:

  • 优点:
    • 字符串长度可以动态确定,因此可变长度的文本可以适合,甚至可以进行长时间的测试。
  • 缺点:
    • 模拟器,例如ModelSim,无法呈现access类型的内容,如'line'
    • 由于使用access类型的VHDL语言限制,为字符串/行操作制作函数/过程可能会更复杂。
    • 不支持合成'访问'类型

答案 1 :(得分:1)

对此有两点想法:

  1. 如果你坚持使用非打印角色,你可以选择多种角色。考虑一下BEL | 7 | CTRL-G。这是非印刷品。很少使用。它可以在终端和许多编辑器(CTRL-G)中输入。如果它意外地“打印”(例如在终端中),它是无害的。和乐趣。其他一切都相同,BEL很有趣。 ^ G ^ G ^ G: - )
  2. 使用您未使用的打印字符。这将使调试和字符串常量更容易。它确实需要使打印字符不受限制。例如反斜杠,反推,波浪等等。
  3. 我倾向于选项2.你会看到你的打击垫角色一目了然,你将能够输入它们。如果源或数据在系统之间移动,则不需要特殊的字体或编辑器。