标签: hardware-programming

以编程方式禁用CPU核心

众所周知,在Linux中禁用逻辑CPU的方法基本上是这样的echo > 0 /sys/devices/system/cpu/cpu<number>/online.这样,您只是告诉操作系统忽略给定的(<number>)CPU.

我的问题更进一步,是否有可能不仅忽略它而是以编程方式将其关闭?我希望CPU不接收任何电源,以使其能耗为零.

我知道可以从BIOS中禁用内核(并非总是如此),但我想知道是否可以在某个程序中执行此操作.

linux hardware multicore processor hardware-programming

22
推荐指数
1
解决办法
4270
查看次数

VHDL - 我应该如何在测试平台中创建时钟?

我应该如何在测试平台中创建时钟?我已经找到了一个答案,但是有关堆栈溢出的其他人已经建议有其他或更好的方法来实现这一点:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

ENTITY test_tb IS 
END test_tb;

ARCHITECTURE behavior OF test_tb IS

    COMPONENT test
        PORT(clk : IN std_logic;)
    END COMPONENT;

   signal clk : std_logic := '0';
   constant clk_period : time := 1 ns;

BEGIN

   uut: test PORT MAP (clk => clk);       

   -- Clock process definitions( clock with 50% duty cycle is generated here.
   clk_process :process
   begin
        clk <= '0';
        wait for clk_period/2;  --for 0.5 ns signal is '0'.
        clk <= '1';
        wait for clk_period/2;  --for next 0.5 …
Run Code Online (Sandbox Code Playgroud)

simulation clock vhdl hardware-programming

21
推荐指数
3
解决办法
11万
查看次数

实施FOR-LOOP和FOR-GENERATE之间的实际区别是什么?什么时候使用一个比另一个好?

我们假设我必须在std_logic_vector上测试不同的位.实现一个单独的进程,每个位的for循环或者使用for-generate来实例化'n'进程,每个进程测试一位是不是更好?

FOR-LOOP

my_process: process(clk, reset) begin
  if rising_edge (clk) then
    if reset = '1' then
      --init stuff
    else
      for_loop: for i in 0 to n loop
        test_array_bit(i);
      end loop;
    end if;      
  end if; 
end process;
Run Code Online (Sandbox Code Playgroud)

FOR-GENERATE

for_generate: for i in 0 to n generate begin
my_process: process(clk, reset) begin
  if rising_edge (clk) then
    if reset = '1' then
      --init stuff
    else
      test_array_bit(i);
    end if;
  end if; 
end process;
end generate;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,对FPGA和ASIC实施会产生什么影响?CAD工具可以轻松应对什么?

编辑:只是添加我给一个帮助人的回复,让我的问题更清楚:

例如,当我在ISE上使用for循环运行一段代码时,综合摘要给了我一个公平的结果,花了很长时间来计算所有内容.当我重新编写我的设计时,这次使用for-generate和几个进程,我使用了更多的区域,但是该工具能够更快地计算所有内容,并且我的计时结果也更好.那么,它是否意味着一个规则,总是更好地使用for-generate,需要额外的面积和更低的复杂性,或者是我必须验证每一个实现可能性的情况之一?

for-loop fpga vhdl asic hardware-programming

7
推荐指数
1
解决办法
4034
查看次数

以编程方式在Windows中重新启动USB设备

我正在开发的一些软件需要USB设备(我作为SerialPort与USB-to-UART桥接器进行交互).

有时,在计算机从休眠状态重新启动后,设备未被检测到,我无法再通过其串行端口向设备写入或读取设备.必须具有对设备的读/写访问权限.

我不能依赖用户采取任何行动(物理或其他),所以我需要一种方法以编程方式重启设备.

我应该如何使用.NET框架以编程方式在Windows XP/Vista/7中重新启动USB设备?

.net windows usb systems-programming hardware-programming

5
推荐指数
1
解决办法
3614
查看次数

只用USB端口编程LED

我想用仅使用USB端口用C#控制LED.我不想用USB连接任何其他设备.我只想将LED直接连接到USB端口引脚并对其进行编程(闪烁等).我怎样才能做到这一点?我是硬件编程的新手,它将是我的第一个程序.

编辑:我可以printer port通过将一个LED 引脚连接到data pin另一个引脚来实现它(闪烁LED)ground.我怎么能用USB端口做同样的事情?我的主板没有打印机端口.USB是唯一的选择.

c# hardware usb hardware-programming

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

有可能重新编程USB驱动器的微控制器吗?

好的,所以我之前打开了usb驱动器,我明白他们使用通用MCU来控制NAND闪存.我在想的是,如果有人可以重新编程它们,在插入USB端口时启动应用程序,那么它对于大量应用程序(例如自动复制文件)可能很有用.我知道不同的MCU可能会/可能不会使用完全不同的ASM代码,但也存在如何与其进行通信的问题(即协议等).这有可能吗?我听说过像MP Tools这样的东西(理论上)可以低级格式化并将驱动器重置为出厂默认值,但不能编辑其上使用的任何代码.

microcontroller assembly usb-drive hardware-programming

5
推荐指数
1
解决办法
5514
查看次数

黑客攻击计算机硬件进行实验控制

我是一名物理学家,几个星期前我有一个启示,关于我如何能够使用我的个人电脑来更好地控制实验室实验,而不是通常的情况.在我试图尝试这一点之前,我想在这些问题上与那些拥有比我更多专业知识的人一起检查可行性.

我们的想法是在计算机上使用i/o端口--- VGA,以太网,扬声器插孔等,直接与实验装置中的传感器和执行器通信.例如,打开以太网电缆的一侧(另一端连接到计算机)并将每条线路发送到不同的设备.我认识一个博士后使用BeagleBone做了非常相似的事情.他写了一些汇编代码,让他用内部时钟同步所有内容,并使用GPIO引脚有效地为他提供了一个完全可编程的混合信号发生器/示波器.使用笔记本电脑似乎应该可以做到同样的事情,这将有额外的好处,你可以从同一设备进行数据分析.

我预见的主要潜在困难是BeagleBone上的硬件设计时考虑到了这种i/o,而我预计笔记本电脑上的硬件可能更难直接控制.我知道(例如,从一些初步调查,http://ask.metafilter.com/125812/Simple-USB-control-how-to-blink-an-LED-via-code)USB端口将难以访问这样,VGA就是(根据VGA 15针端口数据使用Matlab读写)是不可能的.但是,我还没有找到任何关于使用其他端口的信息,如以太网或扬声器插孔.

所以主要的问题是:这个想法是否可行(没有为硬件的每个新变化投入数月),如果是这样,那么什么类型的i/o(以太网,扬声器插孔等)可能是最好的选择?

辅助问题是:

  1. 我在哪里可以找到材料来了解我如何执行此计划?我甚至不确定要在Google上插入哪些关键字.

  2. 我可以轻松地做到这一点取决于操作系统或硬件品牌吗?

hardware hardware-programming

5
推荐指数
1
解决办法
324
查看次数

禁用特定文件的缓存/缓冲区 (Linux)

我目前正在使用 Yocto Linux 构建并尝试与 FPGA 上的硬件块连接。这块是模仿一张带有FAT16文件系统的SD卡;包含单个文件 (cam.raw)。这个文件代表了FPGA和linux系统之间的共享内存空间。因此,我希望能够将数据从 linux 系统写入该内存并取回 FPGA 可能做出的任何更改(目前,FPGA 只是从内存空间中获取部分数据,并将 6 32 位字,就像我写 0x40302010 一样,如果我读回数据,应该返回 0x40302016)。但是,由于某处存在缓存,虽然我可以将数据写入 FPGA,但我无法立即取回结果。

我目前正在做这样的事情(使用 python 因为它很容易):

% mount /dev/mmcblk1 /memstick
% python
>> import mmap
>> import os
>> f = os.open("/memstick/cam.raw", os.O_RDWR | os.O_DIRECT)
>> m = mmap.mmap(f, 0)
>> for i in xrange(1024):
...  m[i] = chr(i % 256)
...
>> m.flush() # Make sure data goes from linux to FPGA
>> hex(ord(m[0])) # Should be 0x6
'0x0'
Run Code Online (Sandbox Code Playgroud)

我可以用 dd 确认数据已更改(尽管我也经常遇到缓冲问题)并使用 FPGA(SignalTap/ChipScope)工具我确实得到了正确答案(即第一个 …

python linux file hardware-programming fat16

5
推荐指数
1
解决办法
2890
查看次数

有模块时为什么要在verilog中使用函数

第 1 部分

我总是被告知使用 Verilog 中的函数来避免代码重复。但是我不能用模块来做到这一点吗?如果我的理解是正确的,除了不能从 always 块内部实例化模块之外,所有函数都可以在 Verilog 中重写为模块。除了在这种情况下,我总是可以坚持使用模块。我对么?

第 2 部分

如果我是对的,为什么 Verilog 编译器不能以模块得到函数处理的方式编写?我的意思是,为什么编译器不能允许程序员在 n 块内实例化一个模块并停止支持函数?

verilog hdl hardware-programming

5
推荐指数
1
解决办法
2208
查看次数

硬件编程 - 动手学习

除了Arduino之外,还有哪些方法可以亲自学习硬件编程?是否有任何漂亮的工具包,既可以是预先组装好的机器人,也可以按照某种方式进行编程,或做某些事情,或类似的事情?

robotics arduino hardware-programming

4
推荐指数
1
解决办法
1121
查看次数