我想为我的缩进使用2个空格而不是4.我可以使用以下命令更改C模式的默认行为:
(setq c-basic-offset 2)
Run Code Online (Sandbox Code Playgroud)
如何在javascript模式下更改此设置?
我有时会发现在clocked always块中使用"局部变量"的阻塞赋值很有用.这可以帮助减少重复的代码.
为了避免在不同的always块中意外使用相同的变量(对于模拟来说可能是非确定性的),我想给它本地范围.有一个很好的综合方式吗?
就像是:
module sum3(
input clk,
input [7:0] in1,
input [7:0] in2,
input [7:0] in3,
output reg [7:0] result,
output reg [7:0] result_p1);
begin :sum
reg [7:0] sum_temp; // local variable
always @(posedge clk) begin
sum_temp = in1 + in2 + in3;
result <= sum_temp;
result_p1 <= sum_temp + 1;
end
end
endmodule
Run Code Online (Sandbox Code Playgroud)
(ModelSim似乎没问题,但Synplify似乎不喜欢它.)
我想避免重置不需要重置的数据寄存器.例如,当通过流水线级流数据时,如果每个级都有一个有效位,则不需要重置数据寄存器.(我相信这可以简化数据寄存器的路由和时序.)
这可以通过使用单独的always块(或vhdl中的进程)轻松完成,但我发现这很冗长,并且执行以下操作是有问题的,因为数据寄存器基本上是由重置启用的.
always @(posedge clk)
if (rst)
out_valid <= 0;
// NOTE: out_data is not reset
else begin
out_valid <= in_valid;
if (in_valid)
out_data <= in_data + 1;
end
Run Code Online (Sandbox Code Playgroud)
相反,我一直把reset子句放在always块的末尾,并利用"last assignment wins"规则.
always @(posedge clk)
begin
out_valid <= in_valid;
if (in_valid)
out_data <= in_data + 1;
if (rst)
out_valid <= 0
end
Run Code Online (Sandbox Code Playgroud)
我没有看到很多人使用这种风格.我有什么缺点或问题吗?有没有更好的方法呢?
额外问题:如果重置是异步的,该怎么办?如:
always @(posedge clk, posedge rst)
begin
out_valid <= in_valid;
if (in_valid)
out_data <= in_data + 1;
if (rst)
out_valid <= 0
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我认为合成器将复位信号连接到数据寄存器,这违背了目的.是否有一种优雅的方法可以将数据寄存器与复位信号去耦,而无需使用单独的always块?
如何使用mac命令键定义aquamacs键盘快捷键.我希望'command'-k表现得像ctrl-k(杀线).提前致谢!
可能重复:
如何在不更改TAB的情况下将命令绑定到Ci?
我想重新定义emacs键盘快捷键控件 - 我是"移动游标"
为此,我将以下行添加到我的.emacs文件中:
(global-set-key (kbd "C-i") 'previous-line)
Run Code Online (Sandbox Code Playgroud)
然后我发现,默认情况下,tab键可以执行任何绑定到control-i的操作,这显然不是我想要的.因此,为了恢复正常的标签行为,我将其添加到我的.emacs文件中
(global-set-key (kbd "<tab>") 'indent-for-tab-command)
Run Code Online (Sandbox Code Playgroud)
这主要是有效的.但是,选项卡不再适用于迷你缓冲区中的自动完成命令.我该如何解决这个问题?或者有更好的方法来解决这个问题吗?谢谢.
我正在使用带有openOCD和GDB的Olimex ARM-USB-OCD加密狗来编程和调试stm32f103 micro.我正在使用的IDE来自Olimex dev-kit CD并使用了eclipse ganymede.
我可以将一个小程序加载到RAM中,并且没有任何问题地逐步执行代码.
我现在有一个更大的程序,它不适合RAM(只有20K),所以我想从flash(128K)运行它.
我修改了链接器脚本,指示程序代码应该进入flash部分(地址0x8000000),但是gdb无法加载程序.
(gdb)
20 load main.out
&"load main.out\n"
load main.out
~"Loading section .text, size 0xb0e6 lma 0x8000000\n"
Loading section .text, size 0xb0e6 lma 0x8000000
&"Load failed\n"
Load failed
Run Code Online (Sandbox Code Playgroud)
我该怎么办才能让gdb将程序加载到flash中?
我在HTML模式下使用emacs.当我输入大约70列文本时,它会自动执行回车操作,将文本分成两行.有没有办法禁用和/或修改它?
我需要从函数内的列表中删除前N个元素,并且我希望修改原始列表.在Python中执行此操作的简洁方法是什么?
使用a slice不起作用,因为切片操作返回对列表的单独引用.在这个例子中,我想pkt是[3,4,5]调用函数后.
>>>> def process_packet(packet, num_bytes):
# ...
packet = packet[num_bytes:len(packet)]
print packet
>>> pkt = [1,2,3,4,5]
>>> process_packet(pkt, 2)
[3, 4, 5]
>>> print pkt
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud) 背景:
我使用的是没有操作系统的cortex-M3 ARM内核.
我的主循环等待来自中断处理程序的标志然后执行一个函数doBigTask().
在一个单独的中断处理程序中,我想执行另一个函数doSmallTask(),但由于这个函数也非常重要,我仍然希望处理其他与I/O相关的中断.
我的问题:
从内部简单地启用中断是否存在任何问题doSmallTask()?例如,在中断已经被禁用后退出中断处理程序是否有任何复杂性?
注意:我不希望发生重入中断,因为doSmallTask()在下一个中断触发它之前就会完成.
int flag = 0;
void doSmallTask()
{
asm volatile ("cpsie i"); // Enable interrupts
// do rest of function
// ...
}
void irqHandler1()
{
flag = 1;
}
void irqHandler2()
{
doSmallTask();
}
void irqHandler3()
{
// service I/O
}
int main()
{
while(1)
if (flag)
{
doBigTask();
flag = 0;
}
}
Run Code Online (Sandbox Code Playgroud) emacs ×4
verilog ×2
aquamacs ×1
arm ×1
asynchronous ×1
blocking ×1
command ×1
cortex-m3 ×1
editing ×1
embedded ×1
gdb ×1
html ×1
indentation ×1
interrupt ×1
javascript ×1
list ×1
macos ×1
nonblocking ×1
openocd ×1
python ×1
reset ×1
scope ×1
shortcut ×1
slice ×1
stm32 ×1
synchronous ×1
tabs ×1
vhdl ×1