完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,
我写了一个程序来从单端口ram中读取内存 module txete(clka,wea,addra,dina,douta);输入clka;输入wea;输入[13:0] addra;输入[7:0] dina;输出[7:0] douta; ramq r1(clka,wea,addra,dina,douta); reg [7:0] rom1 [16383:0]; reg [13:0] addra_reg; initial $ readmemh(“inputHexp.txt”,rom1,0,16383); always @(posedge clka)begin //写if(wea)addra_reg rom1 [addra_reg] assign douta = rom1 [addra_reg]; endendmodule 但它显示错误为: 错误:HDLC编译器:247 - “txete.v”第22行引用向量线'douta'不是合法的注册或变量lvalueERROR:HDLCompilers:42 - “txete.v”第22行程序赋值的非法左侧 帮我清除这个错误...... |
|
相关推荐
6个回答
|
|
嗨,
如果使用always块语句为声明为线型的信号赋值,则会发生这些错误。如果需要条件赋值,则必须使用reg数据类型。 修改您的代码如下: module txete(clka,wea,addra,dina,douta); 输入clka; 输入wea; 输入[13:0] addra; 输入[7:0] dina; 输出reg [7:0] douta; ramq r1(clka,wea,addra,dina,douta); reg [7:0] rom1 [16383:0]; reg [13:0] addra_reg; 初始 $ readmemh(“inputHexp.txt”,rom1,0,16383); 永远@(posedge clka) 开始//写 if(wea) addra_reg |
|
|
|
谢谢,但它再次显示错误:
错误:HDLC编译器:246 - “txete.v”第7行向量reg'douta'的引用不是合法的网络lvalueERROR:HDLCompilers:102 - “txete.v”第7行连接到输出端口'douta'必须是净lvalueERROR :HDLCompilers:246 - “txete.v”第19行向量引用'douta'参考不是合法的网络左值:HDLCompilers:102 - “txete.v”第19行连接到输出端口'douta'必须是净值左值 |
|
|
|
嗨,对于连续分配,您必须使用有线数据类型。所以更改代码如下:module txete(clka,wea,addra,dina,douta);
输入clka;输入wea;输入[13:0] addra;输入[7:0] dina;输出[7:0] douta; reg [7:0] douta1; ramq r1(clka,wea,addra,dina,douta ); reg [7:0] rom1 [16383:0]; reg [13:0] addra_reg;初始$ readmemh(“inputHexp.txt”,rom1,0,16383);总是@(posedge clka)开始// Writeif (wea)addra_reg rom1 [addra_reg] douta1 endassign douta = douta1; endmoduleThanks -------------------------------------------------- ------------------------------------------您是否尝试在Google中输入问题? ? 如果没有,你应该在发布之前。 此外,MARK这是一个答案,以防它有助于解决您的查询/问题。给予帮助您找到解决方案的帖子。 |
|
|
|
你需要移动分配douta线从always块,在“end”之后和endmodule之前。
这应该可以解决你的问题。 但是你有另一个问题:你将douta连接到ramq并将其用作rom1的输出。 我不确定ramq是做什么的,但确实看起来douta被用作输出。 这将产生冲突。 - 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。 |
|
|
|
嗨
我试图用verilog在LCD上放一些东西。 1234 ....现在 即时通讯使用时钟,然后加强分频器模块以减慢速度 但我也得到了与上述相同的错误...... 这是我的主要计划: module display_numbers_timer_divide(SW_0,clk,sf_ce0,lcd_rs,lcd_rw,lcd_e,lcd_4,lcd_5,lcd_6,lcd_7); 参数k = 18; (* LOC =“L13”*)输入SW_0; (* LOC =“C9”*)输入clk; //合成属性PERIOD clk“50 MHz”reg [7:0] count = 0; (* LOC =“D16”*)输出reg sf_ce0; //全高LCD访问高电平reg lcd_busy = 1; reg lcd_stb; reg [5:0] lcd_code; reg [6:0] lcd_stuff reg clk_1; reg clk_2; reg clk_3; (* LOC =“L18”*)输出reg lcd_rs; (* LOC =“L17”*)输出reg lcd_rw; (* LOC =“M15”*)输出reg lcd_7; (* LOC =“P17”*)输出reg lcd_6; (* LOC =“R16”*)输出reg lcd_5; (* LOC =“R15”*)输出reg lcd_4; (* LOC =“M18”*)输出reg lcd_e; divider d1(clk,clk_1); divider d2(clk_1,clk_2); divider d3(clk_2,clk_3); 总是@(posedge clk_3)开始计数结束总是@(posedge clk)开始 sf_ce0 case(count [7:2])0:lcd_code |
|
|
|
您需要将clk_1,clk_2和clk_3声明为wire而不是reg。
同样在模块分隔符中,您有一个名为Clk_out的端口和一个名为clk_out的参数。 它很容易依赖于Verilog的区分大小写。 我建议你重命名clk_out参数,就像clk_out_scaler一样。 - 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。 |
|
|
|
只有小组成员才能发言,加入小组>>
2380 浏览 7 评论
2797 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2262 浏览 9 评论
3335 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2428 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
756浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
545浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
366浏览 1评论
1963浏览 0评论
682浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 02:45 , Processed in 1.405001 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号