如何在Verilog中一起使用inout和reg

用户名

我有以下代码:

module s(clock, direction, readWrite, LA1, LA2, LA3, LA4, LD1, LD2, LD3, LD4, RA1, RA2, RA3, RA4, RD1, RD2, RD3, RD4);
// parameters
input clock, direction, readWrite;      
inout reg [7:0] LD1, LD2, LD3, LD4, RD1, RD2, RD3, RD4;
inout reg [11:0] LA1, LA2, LA3, LA4, RA1, RA2, RA3, RA4;

// code
always @(posedge clock) begin
    if(direction==1) begin          // left to right
        assign RA1 = LA1 | LA2 | LA3 | LA4;
        assign RD1 = LD1 | LD2 | LD3 | LD4;     
        assign { RA2, RA3, RA4 } = RA1;
        assign { RD2, RD3, RD4 } = RD1;     
    end else begin
        if(direction==1) begin      // right to left
            assign LA1 = RA1 | RA2 | RA3 | RA4;
            assign LD1 = RD1 | RD2 | RD3 | RD4;     
            assign { LA2, LA3, LA4 } = LA1;
            assign { LD2, LD3, LD4 } = LD1; 
        end
    end
end
endmodule

但是,在第二行,“ inout reg [7:0] LD1,...”声明在VeritakWin 3.84F中引发语法错误。(Veritak允许一起使用“输出寄存器”,因为在程序中给定的代码之后,我有一个类似的代码)。如果删除“ reg”,则会在分配行中收到错误消息。如果删除“ inout”,显然会出现错误。我什至尝试删除“ assign”关键字,并通过将“ =”替换为“ <=”,但仍然存在错误。我究竟做错了什么?(我是Verilog的新手)

梅兰·托基

inout端口不能为类型regassign您用来为inout端口分配值的类型称为过程连续分配,但是这种类型的端口不允许这样做。您必须改为使用连续分配在您的代码中:

module s(clock, direction, readWrite, LA1, LA2, LA3, LA4, LD1, LD2, LD3, LD4, RA1, RA2, RA3, RA4, RD1, RD2, RD3, RD4);
// parameters input clock, direction, readWrite;      
inout [7:0] LD1, LD2, LD3, LD4, RD1, RD2, RD3, RD4;
inout [11:0] LA1, LA2, LA3, LA4, RA1, RA2, RA3, RA4;

// left to right
assign RA1 = (direction) ? (LA1 | LA2 | LA3 | LA4) : 'bz;
assign RD1 = (direction) ? (LD1 | LD2 | LD3 | LD4) : 'bz;     
assign { RA2, RA3, RA4 } = (direction) ? RA1 : 'bz;
assign { RD2, RD3, RD4 } = (direction) ? RD1 : 'bz;     

// right to left
assign LA1 = (!direction) ? (RA1 | RA2 | RA3 | RA4) : 'bz;
assign LD1 = (!direction) ? (RD1 | RD2 | RD3 | RD4) : 'bz;     
assign { LA2, LA3, LA4 } = (!direction) ? LA1 : 'bz;
assign { LD2, LD3, LD4 } = (!direction) ? LD1 : 'bz; 

endmodule

注意,您不能同时读写inout端口,因此在读取时设置了高阻抗值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Verilog中一起使用inout和reg

来自分类Dev

如何在while和foreach循环中一起使用PHP和MySQL?

来自分类Dev

如何在Python中一起使用applymap,lambda和dataframe来过滤/修改dataframe?

来自分类Dev

您如何在Groovy中一起使用GroupBy和Sum?

来自分类Dev

如何在SQL Server中一起使用count,case和Distinct

来自分类Dev

如何在gnuplot中一起使用“ var”和“ palette”?

来自分类Dev

如何在bootstrap 3 popover中一起使用“ show”和“ placement”等属性?

来自分类Dev

如何在SQL Server中一起使用PIVOT和JOIN?

来自分类Dev

如何在angularjs中一起使用angular-gridster和highcharts-ng指令

来自分类Dev

如何在SQL Server查询中一起使用LIKE和NOT LIKE

来自分类Dev

如何在Laravel中一起使用Memcached和APC?

来自分类Dev

如何在Access VBA编码中一起使用Select Case和AND功能?

来自分类Dev

如何在Python中一起使用filter,group by和agg函数

来自分类Dev

如何在Google表格中一起使用to_date和IFERROR?

来自分类Dev

如何在SQLAlchemy中一起使用JOIN和SELECT AS?

来自分类Dev

如何在Redis中一起使用复制和分片?

来自分类Dev

如何在SQL Server中一起使用相等和不相等

来自分类Dev

如何在Bash中一起使用watch和jobs命令?

来自分类Dev

如何在SQL中一起使用IN子句和AND子句

来自分类Dev

如何在Scrapy中一起使用http和https代理?

来自分类Dev

如何在SQL Server中一起使用count,case和Distinct

来自分类Dev

我如何在React中一起使用'update'和setState(prevState)?

来自分类Dev

如何在for循环中一起使用innerHTML和ejs?

来自分类Dev

如何在 Html.Beginform 中一起使用 AjaxOptions 和 htmlattributes

来自分类Dev

如何在 Swift iOS 中一起使用 UITableView 和 NSLink?

来自分类Dev

如何在laravel中一起使用whereBetween和like运算符?

来自分类Dev

如何在Matlab中一起使用加/减

来自分类Dev

如何在秒表中一起使用 read with while

来自分类Dev

在SQL中一起使用AND和OR

Related 相关文章

  1. 1

    如何在Verilog中一起使用inout和reg

  2. 2

    如何在while和foreach循环中一起使用PHP和MySQL?

  3. 3

    如何在Python中一起使用applymap,lambda和dataframe来过滤/修改dataframe?

  4. 4

    您如何在Groovy中一起使用GroupBy和Sum?

  5. 5

    如何在SQL Server中一起使用count,case和Distinct

  6. 6

    如何在gnuplot中一起使用“ var”和“ palette”?

  7. 7

    如何在bootstrap 3 popover中一起使用“ show”和“ placement”等属性?

  8. 8

    如何在SQL Server中一起使用PIVOT和JOIN?

  9. 9

    如何在angularjs中一起使用angular-gridster和highcharts-ng指令

  10. 10

    如何在SQL Server查询中一起使用LIKE和NOT LIKE

  11. 11

    如何在Laravel中一起使用Memcached和APC?

  12. 12

    如何在Access VBA编码中一起使用Select Case和AND功能?

  13. 13

    如何在Python中一起使用filter,group by和agg函数

  14. 14

    如何在Google表格中一起使用to_date和IFERROR?

  15. 15

    如何在SQLAlchemy中一起使用JOIN和SELECT AS?

  16. 16

    如何在Redis中一起使用复制和分片?

  17. 17

    如何在SQL Server中一起使用相等和不相等

  18. 18

    如何在Bash中一起使用watch和jobs命令?

  19. 19

    如何在SQL中一起使用IN子句和AND子句

  20. 20

    如何在Scrapy中一起使用http和https代理?

  21. 21

    如何在SQL Server中一起使用count,case和Distinct

  22. 22

    我如何在React中一起使用'update'和setState(prevState)?

  23. 23

    如何在for循环中一起使用innerHTML和ejs?

  24. 24

    如何在 Html.Beginform 中一起使用 AjaxOptions 和 htmlattributes

  25. 25

    如何在 Swift iOS 中一起使用 UITableView 和 NSLink?

  26. 26

    如何在laravel中一起使用whereBetween和like运算符?

  27. 27

    如何在Matlab中一起使用加/减

  28. 28

    如何在秒表中一起使用 read with while

  29. 29

    在SQL中一起使用AND和OR

热门标签

归档