小编Doo*_*oov的帖子

什么是判断总线是否包含单个x verilog的最佳方法?

我有一个监控公交车的测试台.总线内的一些信号可以是1'bx.由于各种原因,我需要知道总线内的任何信号是否为1'bx.如果总线包含任何x,那么测试的最佳方法是什么(不是用于综合 - 仅用于模拟目的)?我原本希望我可以使用减少或然后使用===,但这似乎不起作用.谢谢,

d

verilog

9
推荐指数
2
解决办法
1万
查看次数

在matplotlib子图中显示具有实际大小的不同图像

我正在使用python和matplotlib处理一些图像处理算法.我想使用子图(例如输出图像旁边的原始图像)在图中显示原始图像和输出图像.输出图像的尺寸与原始图像的尺寸不同.我想让子图以实际尺寸显示图像(或统一缩放),以便我可以比较"苹果与苹果".我目前使用:

plt.figure()
plt.subplot(2,1,1)
plt.imshow(originalImage)
plt.subplot(2,1,2)
plt.imshow(outputImage)
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果是我得到了子图,但两个图像都被缩放,因此它们的大小相同(尽管输出图像上的轴与输入图像的轴不同).只是为了明确:如果输入图像是512x512并且输出图像是1024x1024,则两个图像都显示为大小相同.

有没有办法强制matplotlib以各自的实际尺寸显示图像(优选的解决方案,以便matplotlib的动态重新缩放不会影响显示的图像)或缩放图像,使其显示尺寸与其实际尺寸成比例?

python image matplotlib

9
推荐指数
3
解决办法
7756
查看次数

fpga中的同步复位设计是时序约束的限制因素

我有一个利用同步复位的fpga设计(由于其他地方讨论的原因,我更喜欢同步复位到异步).我在设计中有四个不同的时钟域,我利用一个按钮来产生我的复位信号,这当然是完全异步的(保存我的手指).我在四个时钟域中的每一个中去抖按钮信号,以从单个源生成四个域的同步复位.我的去抖模块基本上计算了被置位的复位按钮的N个时钟周期.如果复位断言超过N个周期,则生成复位信号(此模块的代码粘贴在下面).

第一个问题 - 有没有比这种方法更好的方法来产生重置?

第二个(更有趣的问题):当我查看时序报告(使用xilinx工具)时,我发现一致的限制信号都与模块有关.例如,限制路径是从复位发生器(去抖动器)到某个状态机的状态寄存器.复位信号的扇出非常高(它们触及各自时钟域中的所有内容).虽然我的速度受到重置的限制,但我有点惊讶.我发现我只限于8.5 nS,其中~50%是路由,其中​​约50%是逻辑.关于如何做得更好的任何建议?你如何处理fpga设计中的同步复位生成?

这是重置生成的代码.注意,信号复位信号类似于去抖动输出(例如,当我实例化模块时,debounced输出是该特定时钟域的复位).

module button_debouncer(/*AUTOARG*/
   // Outputs
   debounced,
   // Inputs
   clk, button
   );
   /* Parameters */
   parameter WIDTH = 1;
   parameter NUM_CLKS_HIGH = 12000000;
   parameter log2_NUM_CLKS = 24;

   /* Inputs */
   input clk;
   input [WIDTH-1:0] button;

   /* Outputs */
   output [WIDTH-1:0] debounced;

   /* Regs and Wires */
   reg [WIDTH-1:0]    b1, b2;
   reg [log2_NUM_CLKS-1:0] counter;

   /* Synched to clock domain */
   always @(posedge clk) begin
      b1 <= button;
      b2 <= b1;
   end

   /* Debounce the …
Run Code Online (Sandbox Code Playgroud)

verilog fpga xilinx

6
推荐指数
1
解决办法
2285
查看次数

用自制软件安装mac的python中的OpenCV

我正试图在运行mavericks的mac上获得opencv for python.谷歌搜索/堆栈溢出搜索后,我试过:

brew install homebrew/science/opencv
Run Code Online (Sandbox Code Playgroud)

基于终端输出,它看起来像是有效的.

为了验证我写了一个只包含以下内容的python脚本:

import cv2

print("Hello")
Run Code Online (Sandbox Code Playgroud)

我得到no module named cv2.当我尝试通过键入来help('modules')查看已安装的模块时,我看不到cv或cv2.这给我留下了两个结论:要么我没有正确安装opencv,要么import cv2实际上没有导入cv2而python正在寻找cv2的错误位置.任何建议,将不胜感激.

python opencv

3
推荐指数
1
解决办法
1770
查看次数

verilog中参数化的循环延迟次数?

我必须在管道中延迟一些控制信号,这是由管道中的级数设计的.这显然非常直接 - 只需在输入信号和输出信号之间放置N个触发器.我想知道是否有一种参数化N的方法.如果我改变了管道中的阶段数量,我必须返回并添加/删除触发器,这有点烦人.我想过只是编写一个脚本来读取某个地方的定义并生成模块,但这似乎有些过分.genvar循环是正确的方式去这里?

verilog

2
推荐指数
1
解决办法
4237
查看次数

基于 xilinx/modelsim 的综合/仿真的编译器指令的自动标志?

我有一个大型 verilog 项目,我正在将它合成到 xilinx fpga 上并在 modelsim 中进行模拟。有几个模块,我想在其中模拟所述模块的一个版本并合成另一个版本。例如,我有一个参数化的重置去抖动器,它计算几毫秒。显然,对于模拟来说,这很烦人,所以在我模拟之前,我将去抖动计数更改为 10 个时钟周期。目前我有一个标志(`define SIMULATION),我将其注释掉以进行综合。然后在我的模块中,我利用诸如 'ifdef 之类的编译器指令根据合成/模拟来编译不同版本的 deouncer:

 `ifdef SIMULATION
   button_debouncer #(1,5, 24)
`else
   button_debouncer #(1,12000000,24)
`endif
   resetdebounce(/**/
         // Outputs
         .debounced     (reset),
         // Inputs
         .clk           (clk),
         .button        (~reset_button));
Run Code Online (Sandbox Code Playgroud)

虽然这行得通,但它要求我每次从 modlesim 切换到 ISE 时都注释输入/输出`define SIMULATION。我经常忘记,浪费时间等等。

是否有自动确定正在使用的工具的方法?例如,我可以说ifdef XILINX orifdef MODELSIM 之类的东西,而不是我的 `ifdef SIMULATION hack?非常感谢!

simulation verilog fpga modelsim xilinx

0
推荐指数
1
解决办法
5085
查看次数

标签 统计

verilog ×4

fpga ×2

python ×2

xilinx ×2

image ×1

matplotlib ×1

modelsim ×1

opencv ×1

simulation ×1