我想这是你的问题:
您在同一时钟中对同一个reg执行2个操作。
因此,不会考虑第一个行动
sr [0] sr
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好。
Current Im设计3x8右移SISO 以下是我的verilog代码: `timescale 1ns / 1psmodule ShiftReg(Clk,En,In,Out); 参数InWidth = 3; 参数长度= 8; 输入Clk,En; input [InWidth-1:0] In; 输出[InWidth-1:0]输出; reg [Length-1:0] sr; 始终@(posedge Clk)开始if(En == 1'b1)begin sr [0] sr end end assign Out = sr [Length-1]; endmodule 不过这是我的警告: 警告:HDLCompiler:413 - “C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v”第17行:截断3位表达式的结果以适合1位目标。警告:Xst:647 - 从不使用输入。 如果该端口属于顶级块或者属于子块,则该端口将被保留并保持未连接状态,并保留该子块的层次结构。警告:Xst:1710 - FF / Latch(无初始值) 块中的常量值为0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1710 - FF / Latch(无初始值)在块中具有常量值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修剪此FF / Latch。 有没有人知道我的输入问题? 非常感谢你 以上来自于谷歌翻译 以下为原文 Hello everyone. Current Im designing 3x8 shift right SISO Below is my verilog code: `timescale 1ns / 1ps module ShiftReg (Clk,En,In,Out); parameter InWidth = 3; parameter Length = 8; input Clk,En; input [InWidth-1:0] In; output [InWidth-1:0] Out; reg [Length-1:0] sr ; always@(posedge Clk) begin if (En == 1'b1) begin sr[0] <= In; sr <= sr<<1; end end assign Out = sr[Length-1]; endmodule However this is my warning: WARNING:HDLCompiler:413 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 17: Result of 3-bit expression is truncated to fit in 1-bit target. WARNING:Xst:647 - Input WARNING:Xst:1710 - FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1710 - FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch Does anyone have any idea for my input problem? Thank you very much |
|
相关推荐
9个回答
|
|
您好@ dayana42200,
我想这是你的问题: 您在同一时钟中对同一个reg执行2个操作。 因此,不会考虑第一个行动 sr [0] sr |
|
|
|
这里有很多事情需要修复。
@ dayana42200 - 你能使用SystemVerilog吗? 如果可以,解决方案将更容易,更明显。 你的一些麻烦来自于你的大小调整,以及索引你的移位寄存器变量sr: reg [Length-1:0] sr; 在您的示例中,这是一个8位寄存器。 当我* THINK *你打算(3),8位寄存器),即。 总共24位)。 目前,当您索引该登记册时, SR [0] 你只分配了一位。 sr [0]是一位宽,右边的表达式是3位。 所以你在截断中截断了两位。 同样在你的输出中: 分配Out = sr [Length-1]; 您正在索引sr返回1位值。 您要将其分配给3位输出“Out”。 所以Verilog用零填充高位。 为了使这项工作(再次使用SystemVerilog)将sr声明为二维数组: reg [长度 - 1:0] [InWidth - 1:0] sr; 永远@(posedge Clk) 开始 if(En == 1'b1) 开始 SR 注意我简化了sr移位,并使用连接将新的In赋值转换为单行。 如果您愿意,也可以将线条分开,类似于Florent的建议。 Verilogsolution会是类似的 - 如果您受限于此,请告诉我们,我也可以展示该解决方案。 问候, 标记 以上来自于谷歌翻译 以下为原文 There's a bunch of things going on here that need to be fixed. @dayana42200 - are you able to use SystemVerilog? The solution will be easier, and more apparent if you can. Some of your trouble comes about in your sizing, and indexing into your shift register variable sr: reg [Length-1:0] sr ;This is, in your example, a single 8 bit register. When I *THINK* you intend (3), 8-bit registers )i.e. 24 bits total). Currently, when you index into that register i.e. sr[0] <= In;You're only assigning one bit. sr[0] is one bit wide, your right hand side expression is 3 bit. So you're truncating two bits in the assignment. Similarly in your output: assign Out = sr[Length-1];You're indexing of sr is returning a 1 bit value. Which you're assigning to the 3-bit output "Out". So Verilog fills in the upper bits with zeros. To make this work (again SystemVerilog) declare sr as a 2-dimensional array: reg [ Length - 1 : 0 ] [ InWidth - 1 : 0 ] sr ;always@(posedge Clk)begin if (En == 1'b1) begin sr <= { sr, In }; endendassign Out = sr[Length-1];Notice I simplify the sr shift, and new In assignment into a single line using a concatenation. If you prefer, you can split the lines out similar to Florent's suggestion as well. The Verilogsolution would be similar - let us know if you're restricted to that, and I can show that solution as well. Regards, Mark |
|
|
|
@florentw
感谢您的信息。 我尝试了你的方法,但仍有警告 警告:HDLCompiler:413 - “C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v”第17行:截断3位表达式的结果以适合1位目标。警告:HDLCompiler:634 - “C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v”第11行:Net没有驱动程序。警告:Xst:647 - 从不使用输入。 如果该端口属于顶级块或者属于子块,则该端口将被保留并保持未连接状态,并保留该子块的层次结构。警告:Xst:653 - 使用信号>但从未分配。 该无源信号将自动连接到GND值。警告:Xst:1710 - FF / Latch(无初始值)在块中具有常量值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1710 - FF / Latch(无初始值)在块中具有常量值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修剪此FF / Latch。 以上来自于谷歌翻译 以下为原文 @florentw Thank you for your information. Ive tried your method but still have warning WARNING:HDLCompiler:413 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 17: Result of 3-bit expression is truncated to fit in 1-bit target. WARNING:HDLCompiler:634 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 11: Net WARNING:Xst:647 - Input WARNING:Xst:653 - Signal WARNING:Xst:1710 - FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1710 - FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch |
|
|
|
@markcurry
谢谢你的想法。 仅供参考我使用Verilog,但我也尝试过你的方法。 警告:HDLCompiler:1439 - “C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v”第11行:在这种verilog模式下不允许多个打包维度警告:HDLCompiler:413 - “C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v“第17行:27位表达式的结果被截断以适合24位目标。 SR 它看起来像PISO移位寄存器。 我错了吗? 以上来自于谷歌翻译 以下为原文 @markcurry Thank for your idea. FYI Im using Verilog but Ive tried your method as well. WARNING:HDLCompiler:1439 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 11: Multiple packed dimensions are not allowed in this mode of verilog WARNING:HDLCompiler:413 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 17: Result of 27-bit expression is truncated to fit in 24-bit target. sr <= { sr, In };It looks like for PISO shift register. Am I wrong? |
|
|
|
@florentw
谢谢您的意见。 我尝试了你的方法,仍然有警告。 警告:HDLCompiler:413 - “C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v”第17行:截断3位表达式的结果以适合1位目标。警告:HDLCompiler:634 - “C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v”第11行:Net没有驱动程序。警告:Xst:647 - 从不使用输入。 如果该端口属于顶级块或者属于子块,则该端口将被保留并保持未连接状态,并保留该子块的层次结构。警告:Xst:653 - 使用信号>但从未分配。 该无源信号将自动连接到GND值。警告:Xst:1710 - FF / Latch(无初始值)在块中具有常量值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1710 - FF / Latch(无初始值)在块中具有常量值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修整此FF / Latch。警告:Xst:1895 - 由于其他FF / Latch修整,FF / Latch(无初始值)在块中具有恒定值0。 在优化过程中将修剪此FF / Latch。 以上来自于谷歌翻译 以下为原文 @florentw Thank you for your opinion. Ive tried your method and still have warning. WARNING:HDLCompiler:413 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 17: Result of 3-bit expression is truncated to fit in 1-bit target. WARNING:HDLCompiler:634 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 11: Net WARNING:Xst:647 - Input WARNING:Xst:653 - Signal WARNING:Xst:1710 - FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1710 - FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch WARNING:Xst:1895 - Due to other FF/Latch trimming, FF/Latch |
|
|
|
您好@ dayana42200,
这是因为sr宽度是24位,In是宽度3位。 所以当你这样做的时候 {sr,In} 您正在创建一个27位的值,您正在尝试24位信号。 这就是编译告诉你的。 你需要做一个24位的单词。 我想你要做的是: SR FlorentProduct应用工程师 - Xilinx技术支持EMEA ------------------------------------------ -------------------------------------------------- ----------------------------不要忘记回复,kudo,并接受作为解决方案。 以上来自于谷歌翻译 以下为原文 Hi @dayana42200, This is because sr width is 24 bit and In is width 3 bits. So when you are doing { sr, In }You are creating a value of 27 bits that you are trying to a signal of 24 bits. This is what the compile tells you. You need to have do a word of 24 bits. I think what you are trying to do is: sr <= { sr[Length-1:3] , In }; Florent Product Application Engineer - Xilinx Technical Support EMEA ------------------------------------------------------------------------------------------------------------------------ Don't forget to reply, kudo, and accept as solution. |
|
|
|
@florentw
这是我基于给出的想法的新SISO代码 `timescale 1ns / 1psmodule ShiftReg(Clk,En,In,Out); 参数InWidth = 3; 参数长度= 8; 输入Clk,En; input [InWidth-1:0] In; 输出[InWidth-1:0]输出; reg [Length-1:0] sr [InWidth-1:0]; 始终@(posedge Clk)开始if(En == 1'b1)begin sr end end assign Out = sr [Length-1]; endmodule 和新的警告 错误:HDLCompiler:255 - “C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v”第17行:无法直接分配到内存srERROR:HDLCompiler:698 - “C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v“第17行:不允许部分选择内存srERROR:HDLCompiler:1373 - ”C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v“第17行: 在程序中不能使用解压缩的值/目标ERROR:HDLCompiler:598 - “C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v”第2行:由于先前的错误而忽略了模块。 嗯...它的硬T.T 以上来自于谷歌翻译 以下为原文 @florentw This is my new SISO code based on the ideas given `timescale 1ns / 1ps module ShiftReg (Clk,En,In,Out); parameter InWidth = 3; parameter Length = 8; input Clk,En; input [InWidth-1:0] In; output [InWidth-1:0] Out; reg [Length-1:0] sr [InWidth-1:0]; always@(posedge Clk) begin if (En == 1'b1) begin sr <= { sr[Length-1:3] , In }; end end assign Out = sr[Length-1]; endmodule AND the new warnings ERROR:HDLCompiler:255 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 17: Cannot assign to memory sr directly ERROR:HDLCompiler:698 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 17: Part-select of memory sr is not allowed ERROR:HDLCompiler:1373 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 17: Unpacked value/target cannot be used in assignment ERROR:HDLCompiler:598 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 2: Module Emmm ... its hard T.T |
|
|
|
HI @ dayana42200,
做一个中间信号/ reg来获得值+移位。 然后分配sr。 问候, 弗洛朗 FlorentProduct应用工程师 - Xilinx技术支持EMEA ------------------------------------------ -------------------------------------------------- ----------------------------不要忘记回复,kudo,并接受作为解决方案。 以上来自于谷歌翻译 以下为原文 HI @dayana42200, Do an intermediate signal/reg to get the value+shifting. Then assign sr. Regards, Florent Florent Product Application Engineer - Xilinx Technical Support EMEA ------------------------------------------------------------------------------------------------------------------------ Don't forget to reply, kudo, and accept as solution. |
|
|
|
哇 - 一夜之间发生了很多事。
@ dayama42200,真的建议只需打开SystemVerilog模式编译,并使用我的原始示例。 它会工作。 您收到的错误消息: 警告:HDLCompiler:1439 - “C: Users User Desktop PE ShiftReg ShiftReg ShiftReg.v”第11行:在这种verilog模式下不允许多个打包维度 那是因为你试图在Verilog模式下使用SystemVerilog。 只需将文件重命名为.sv,Vivado综合处理就可以了。 问候, 标记 以上来自于谷歌翻译 以下为原文 Whoa - lots going on overnight. @dayama42200, really suggest just turning on SystemVerilog mode compile, and using my original example. It will work. The error messages you were receiving: WARNING:HDLCompiler:1439 - "C:UsersUserDesktopPEShiftRegShiftRegShiftReg.v" Line 11: Multiple packed dimensions are not allowed in this mode of verilog Those were because you were trying to use SystemVerilog in a Verilog only mode. Just rename the file to a .sv and Vivado synthesis will handle it fine. Regards, Mark |
|
|
|
只有小组成员才能发言,加入小组>>
2429 浏览 7 评论
2831 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2298 浏览 9 评论
3378 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2468 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1368浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
596浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
460浏览 1评论
2013浏览 0评论
738浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 05:50 , Processed in 1.538737 second(s), Total 97, Slave 80 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号