阅读:2220回复:18
verilog
某个时钟clk的上升沿和下降沿都触发数据,需要一个程序,这个程序要求用ckl1的上升沿来触发这个数据。我怎么创建出这个时钟clk1啊。
|
|
|
沙发#
发布于:2003-01-02 16:32
verilog不会,vhdl到是不难实现
|
|
板凳#
发布于:2003-01-02 16:50
不难,VHDL很容易就能够实现,VERILOG应该也很方便,我想随便一本有例子的参考书上就可以找得到。
|
|
地板#
发布于:2003-01-03 12:02
这种例子应该不多,因为一般不同时用上升和下降沿,一般的都是用一个边沿,我用vhdl做过双边沿的,但对你应该没用
|
|
地下室#
发布于:2003-01-07 15:16
green_pine,你贴出来看看,为什么说没有用哪。多谢了。
|
|
|
5楼#
发布于:2003-01-07 15:29
这是个小问题,去www.altera.com有类同的例子
------------------ 解决问题后加点分? |
|
6楼#
发布于:2003-01-07 17:53
green_pine,你贴出来看看,为什么说没有用哪。多谢了。 那个例子是很早以前写的,明天我给你找找,贴出来,之所以说没用是因为用vhdl写的,不是用verilog |
|
7楼#
发布于:2003-01-08 08:40
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY EXAM IS PORT(CLK:IN STD_LOGIC; wr:in std_logic; reset:in std_logic; en:in std_logic; data:in std_logic_vector(5 downto 0); out1:OUT STD_LOGIC_vector(5 downto 0)); END EXAM; ARCHITECTURE FUNC OF EXAM IS SIGNAL TEMP1,TEMP2 :std_logic_vector(5 downto 0); signal flag1:std_logic:=\'0\'; signal flag2:std_logic:=\'0\'; signal out2:std_logic_vector(5 downto 0); begin out1<=out2; l1:process(clk,reset) begin if(reset=\'1\')then temp1<=(others=>\'0\'); elsif(clk\'event and clk=\'1\') then if wr=\'1\' then if flag2=\'0\' then temp1<=data; flag1<=\'1\'; else temp1<=(others=>\'0\'); end if; else temp1<=temp1+1; flag1<=\'0\'; end if; end if; end process; l2:process(clk,reset) begin if(reset=\'1\') then temp2<=(others=>\'0\'); elsif (clk\'event and clk=\'0\') then if wr=\'1\' then if flag1=\'0\' then temp2<=data; flag2<=\'1\'; else temp2<=(others=>\'0\'); end if; else temp2<=temp2+1; flag2<=\'0\'; end if; end if; end process; l3:process(clk,wr) begin if wr=\'1\' then out2<=data; elsif(en=\'1\') then out2 <= out2; elsif clk=\'1\' then out2 <= temp2 + temp1; elsif clk=\'0\' then out2<=temp2+temp1; end if; end process; end func; 这是一个双边沿的计数器,但是有毛刺,因为用到了+ |
|
8楼#
发布于:2003-01-08 16:38
进程多,如配合不好,就会有毛剌.
|
|
9楼#
发布于:2003-01-08 16:43
verilog,vhdl是不难实现,但它们编写的核就要比ahdl大3倍,所以就会有时间的延时,毛刺的产生.
--------------------- 答的正确,加点分!!!! |
|
10楼#
发布于:2003-01-08 16:48
多谢green_pi了
wuhao,你能不能提供一个verilog的程序阿。 |
|
|
11楼#
发布于:2003-01-08 17:12
在高速处理事件时,一般不用Verilog语言,因为它的速度跟不上,有可产生各种自己想向不到的问题,向您这样用双边沿(上升沿和下降沿都触发器)实时性太强,数据是否正确这是您成功的关键,我都用的是ahdl语言写,而不用Verilog语言写.无法满定您的一个完整的例子.
|
|
12楼#
发布于:2003-03-25 17:06
green_pine,能不能帮我讲解一下你的程序啊。
|
|
|
13楼#
发布于:2003-03-26 09:53
在高速处理事件时,一般不用Verilog语言,因为它的速度跟不上,有可产生各种自己想向不到的问题,向您这样用双边沿(上升沿和下降沿都触发器)实时性太强,数据是否正确这是您成功的关键,我都用的是ahdl语言写,而不用Verilog语言写.无法满定您的一个完整的例子. 这个观点不能同意,目前绝大多数的asic设计都是使用verilog语言,并且速度越来越快,按照上面的观点,似乎都应该采用ahdl才对.实际上asic设计实现的速度主要和设计方法(不是指语言,是指在设计阶段就合理的使用资源),综合工具(如果是PLD,FPGA,就是要针对特定的器件的资源状况合理的优化设计)有关. 对于一个asic设计人员来说,使用怎样的设计语言是小问题,关键是看设计方法. |
|
|
14楼#
发布于:2003-03-26 11:01
[quote]在高速处理事件时,一般不用Verilog语言,因为它的速度跟不上,有可产生各种自己想向不到的问题,向您这样用双边沿(上升沿和下降沿都触发器)实时性太强,数据是否正确这是您成功的关键,我都用的是ahdl语言写,而不用Verilog语言写.无法满定您的一个完整的例子. 这个观点不能同意,目前绝大多数的asic设计都是使用verilog语言,并且速度越来越快,按照上面的观点,似乎都应该采用ahdl才对.实际上asic设计实现的速度主要和设计方法(不是指语言,是指在设计阶段就合理的使用资源),综合工具(如果是PLD,FPGA,就是要针对特定的器件的资源状况合理的优化设计)有关. 对于一个asic设计人员来说,使用怎样的设计语言是小问题,关键是看设计方法. [/quote] verilog的延时结果不可预见,AHDL更接近硬件延时清楚,所以wuhao的观点有一定的道理。 |
|
15楼#
发布于:2003-03-26 12:35
[quote][quote]在高速处理事件时,一般不用Verilog语言,因为它的速度跟不上,有可产生各种自己想向不到的问题,向您这样用双边沿(上升沿和下降沿都触发器)实时性太强,数据是否正确这是您成功的关键,我都用的是ahdl语言写,而不用Verilog语言写.无法满定您的一个完整的例子. 这个观点不能同意,目前绝大多数的asic设计都是使用verilog语言,并且速度越来越快,按照上面的观点,似乎都应该采用ahdl才对.实际上asic设计实现的速度主要和设计方法(不是指语言,是指在设计阶段就合理的使用资源),综合工具(如果是PLD,FPGA,就是要针对特定的器件的资源状况合理的优化设计)有关. 对于一个asic设计人员来说,使用怎样的设计语言是小问题,关键是看设计方法. [/quote] verilog的延时结果不可预见,AHDL更接近硬件延时清楚,所以wuhao的观点有一定的道理。 [/quote] 延时特性不会因为换了一种语言的描述方法而改变,如果说换了verilog就无法预见只能说明对这种语言的熟悉程度有限.实际上几乎所有的ahdl语句在verilog中都能找到对应的描述方法,其他硬件描述语言也一样,同样的一个触发器不会因为用了ahdl而和verilog描述的触发器工作特性有所不同.改善时延特性的关键还是设计方法和综合工具.如果说同样的设计在altera的器件中实现ahdl比verilog要好的话,无非是altera的综合工具对ahdl的处理更完善(毕竟是亲生的). |
|
|
16楼#
发布于:2003-03-27 02:58
[quote][quote][quote]在高速处理事件时,一般不用Verilog语言,因为它的速度跟不上,有可产生各种自己想向不到的问题,向您这样用双边沿(上升沿和下降沿都触发器)实时性太强,数据是否正确这是您成功的关键,我都用的是ahdl语言写,而不用Verilog语言写.无法满定您的一个完整的例子. 这个观点不能同意,目前绝大多数的asic设计都是使用verilog语言,并且速度越来越快,按照上面的观点,似乎都应该采用ahdl才对.实际上asic设计实现的速度主要和设计方法(不是指语言,是指在设计阶段就合理的使用资源),综合工具(如果是PLD,FPGA,就是要针对特定的器件的资源状况合理的优化设计)有关. 对于一个asic设计人员来说,使用怎样的设计语言是小问题,关键是看设计方法. [/quote] verilog的延时结果不可预见,AHDL更接近硬件延时清楚,所以wuhao的观点有一定的道理。 [/quote] 延时特性不会因为换了一种语言的描述方法而改变,如果说换了verilog就无法预见只能说明对这种语言的熟悉程度有限.实际上几乎所有的ahdl语句在verilog中都能找到对应的描述方法,其他硬件描述语言也一样,同样的一个触发器不会因为用了ahdl而和verilog描述的触发器工作特性有所不同.改善时延特性的关键还是设计方法和综合工具.如果说同样的设计在altera的器件中实现ahdl比verilog要好的话,无非是altera的综合工具对ahdl的处理更完善(毕竟是亲生的). [/quote] 没错,C语言中还可以嵌入ASM呢,但那不是本质的C。 |
|
17楼#
发布于:2003-03-28 11:05
系统运行速度的快慢,全在于你的设计方法及开发工具综合布线器的性能和使用,我认为与具体使用的语言无关。其实,verilog可以实现RTL描述,altera公司的AHDL就是RTL描述语言(他也支持门级描述),用AHDL语言写起来比较累,而且移植性不好!还是用verilog开发比较好,言简意赅!在编写速度要求很高的程序时,最好少用行为描述语句!
|
|
18楼#
发布于:2003-03-29 10:23
现在,许多FPGA和CPLD内部都具有PLL电路,因此对于高速应用场合,以及需要用到上升和下降沿触发的时钟,通常都会使用PLL产生内部时钟以及相位差180度的时钟,从而使需要用到下降沿的时钟还是使用了上升沿。从FPGA的数据手册中可以看到,是否使用PLL对速度还是有一定的影响。
|
|