2007년 5월 31일 목요일

컴퓨터공부/Embedded에 해당되는 글 30건 (http://achiven.tistory.com/category/컴퓨터공부/Embedded)

열정을 희망으로, 희망을 현실로.. ::
 
컴퓨터공부/Embedded에 해당되는 글 30건
 
2007/05/16 :: arm-linux-??
2007/05/16 :: Makefile 만들기
2007/03/11 :: I2c란
2006/11/23 :: Rockbox에 대하여
2006/11/22 :: Mass Storage
2006/11/22 :: FTL정보
2006/11/19 :: Linux on ipod (1)
 
The end...

--
  Best Regards...


- Inner Secret Devices -

Chang-woo YANG

Homepage: http://www.PLDWorld.com
E-mail: podongii@PLDWorld.com

 

Add this card to your address book

2007년 5월 17일 목요일

PCI Express - 버추얼 인스트루먼트의 세계를 확장하십시오.

URL: http://www.ni.com/pciexpress/ko/

Introduction to PCI Express Training Slides

This presentation delivers an overview of the new PCI Express bus technology. The presentation offers a techincal overview of the evolution of PC buses , the benefits of PCI Express, and the physical and software layers of PCI Express.

Download the Presentation Files

PCI Express – An Overview of the PCI Express Standard- Developer Zone - National Instruments

URL: http://zone.ni.com/devzone/cda/tut/p/id/3767

Overview

This paper looks at the success of the widely adopted PCI bus and describes a higher-performance next generation of I/O interconnect technology – PCI Express – that will serve as a standard local I/O bus for a wide variety of future computing platforms. The paper also offers a technical overview of the evolution of PC buses, the physical and software layers of PCI Express, the benefits of PCI Express, and the implications this exciting new technology will have on measurement and automation systems.

Table of Contents

  1. Summary
  2. PC History
  3. PCI Bus History and Overview
  4. PCI Challenges
  5. PCI Express Architecture
  6. PC Architecture – Today and Future
  7. PCI Express Packaging
  8. Benefits of PCI Express
  9. Glossary
  10. Further Reading

About This Site (Ask the CSS Guy)

URL: http://www.askthecssguy.com/2006/10/about_this_site.html

Welcome. After spending a few years learning and implementing CSS, friends started asking me questions on how to accomplish certain layouts using CSS. I thought maybe there was a market for a site like this, so I started it. (Yeah, it uses the default movable type template - a real design is in the works.) UPDATE: (11-25-2006) Default Movable Type template is no more!

I realize that a name like "Ask the CSS guy" is a bit pretentious, but saying "Ask A CSS Guy" doesn't quite sound as good, does it? So, yeah, I'm positioning myself as an expert, but anybody who is anybody knows I'm not THE expert.

I started learning CSS in 2003 when a coworker at a new place I started working said, "This is how we do things." He mentioned a guy named "Zeldman" and other names like "Cederholm" and "Meyer", and though I had never heard of them before, I scrambled to find out who they are and digest as much of what they've written as possible. A name like theirs, or the others that run in their circle, would probably better qualify as the CSS guy. I would hope that any CSS assistance I may provide to you would be approved by those guys.

Thanks.

2007년 5월 10일 목요일

How to choose an RTOS for your FPGA and ASIC designs

Source: http://www.pldesignline.com/showArticle.jhtml?printableArticle=true&articleId=199500390



May 09, 2007

How to choose an RTOS for your FPGA and ASIC designs

As an alternative to purchasing an off-the-shelf RTOS or writing your own, a new software synthesis technique called RTOS synthesis may be of interest for certain applications.

By Bob Zeidman, Zeidman Consulting

Introduction
This article examines different options for putting a real-time operating system (RTOS) on a system on a chip (SoC). There are basically three options:

1. Purchase an off-the-shelf RTOS
2. Write your own RTOS
3. Use a software synthesis tool to automatically generate an RTOS.

If you purchase one, what is available and what are the tradeoffs? If you write your own, which issues will you need to take into account? If you synthesize one, what tools are available and how do they work?

What is a system-on-a-chip?
The definition of a system on a chip (SoC) varies somewhat, depending on the use. One definition is a chip that is so large – contains so many logic gates – that it takes the place of an entire system that would have taken an entire PCB full of chips only a few years ago. For the purposes of this article, however, we will use the definition that a programmable SoC – which may be implemented as a custom ASIC or using an off-the-shelf FPGA – must include a microprocessor.

What is an RTOS?
A good place to start is to define a real-time operating system. The book Real-Time Concepts for Embedded Systems, by Qing Li with Caroline Yao, defines an RTOS as: "a program that schedules execution in a timely manner, manages system resources, and provides a consistent foundation for developing application code."

The key differentiator between any old operating system and a real-time operating system is the term "timely." Of course, this vague adjective leaves lots of wiggle room. Rather than "timely," it might be better to say "within specified time constraints." An RTOS has specific time constraints that a desktop PC does not. For example, when you click on an icon, it may take seconds (or, unfortunately even minutes) to start the execution of a program while a disk cleanup operation or a virus scan is occurring in the background. By comparison, when you step on your brake pedal in your car, you can't have the operating system finish a disk scan before the brakes are activated. In this case the brakes must activate within a specific time, so the OS in your car must be a real-time OS.

The example of the braking system in a car is more precisely what is called a hard RTOS. This means that the time between pressing the brake pedal and the time that the brakes are engaged must have an absolute worst-case time, or latency. A hard RTOS has time constraints that must be met under any and all conditions for certain tasks. By comparison, a soft RTOS can usually respond within a certain time, though under some conditions there may be further, unpredictable delay. For example, a vending machine company may have surveys showing that customers want their candy bars within 2 seconds of pressing the button, but if one out of every thousand customers has to wait 10 seconds, there will be no catastrophic results (other than a swift kick to the machine).

The book goes on to say that: "in some applications, an RTOS comprises only a kernel, which is the core supervisory software that provides minimal logic, scheduling, and resource management algorithms. . . On the other hand, an RTOS can be a combination of various modules, including the kernel, a file system, networking protocol stacks, and other components required for a particular application. . ."

This definition illustrates one of the problems in defining an RTOS. Some people refer to the kernel, the basic task scheduler, as the RTOS while others refer to the kernel plus hardware drivers plus services as the RTOS. Those who followed the Microsoft anti-trust legal proceedings will remember that this same question came up there. When Microsoft added a file editor and a calculator and – specifically – a Web browser, did these constitute applications on top of the operating system, as the government insisted, or did they constitute additional functionality for the OS as Microsoft insisted? The answer is not simple and many reasonable people continue to disagree. For our purposes, we will refer to the RTOS as simply the task manager or kernel. The drivers and applications, though very important, will be considered to be separate.

Do You Need An RTOS?
If your SoC will be running more than one task then it needs an RTOS. If your SoC will run only one task, then most likely you would not need an SoC but could simply create a hardware state machine in Verilog or VHDL to implement the single task.

While it is theoretically possible to create the RTOS in hardware, the effort is difficult, there are few if any tools to support it, and it is very difficult to make changes during development and particularly to systems in the field. These are all the reasons why software is useful and why systems are migrating to processor-based SoCs.
One argument that you must be careful to avoid is the one that says the processor in your SoC is doing only one thing so there is no need for an RTOS. This argument is often heard when describing multiprocessor SoCs – those with multiple small processors, each handling a single piece of hardware or a single small task. The CEO of a company that produces configurable processors – someone who should have known better – made this argument at a recent talk. If your SoC contains multiple processors, each handling one task, the processors by definition are actually handling more than one task. Each processor is handling the task to which it is assigned plus the task of communicating with the other processors. All SoCs need some kind of RTOS. The question is which RTOS and whether to build, buy, or use a third, more recent, option – synthesize.

Purchasing an RTOS
Many commercial companies offer RTOSes that have been designed and debugged for you. These are often called "off-the-shelf" RTOSes. There are generally two kinds of off-the-shelf RTOS – ones where you purchase object code that has been compiled for the processor you will be using, and ones where you receive the source code and compile the code to your processor. These are described in further detail below.

Object Code: A traditional off-the-shelf RTOS consists of code that has been written, compiled, debugged, and tested by a company that then sells the object code. The main reason for selling object code is that this protects the intellectual property of the company because the object code is extremely difficult to reverse engineer. It also means that the customer relies on the vendor to do a good job and to support the code when there are problems.

The traditional method of charging for these kinds of RTOSes is with an upfront fee and a royalty. In other words, the vendor receives a certain amount of money to hand over the code to the customer and support it during system development; the vendor subsequently receives a little money for each system that the customer ships containing the RTOS. With the availability of embedded Linux, which is open source, the object code model is becoming less popular.

Open Source: Especially since the introduction of Linux, and later the introduction of real-time versions of Linux intended for embedded systems, users are often no longer willing to pay royalties and want their software for free. Of course there is no such thing as a free lunch. Companies do not stay in business by giving away free goods. Open source RTOSes may be free to download, but there is usually a steep learning curve.

Linux, for example, is a one-size-fits-all RTOS with every imaginable feature in it. Writing code to conform to Linux and configuring it to your system is non-trivial. Companies providing RTOS source code for free make their money by charging for tools, support, and code that runs on top of the RTOS. Also, be careful with regard to the temptation to obtain free code and free support from a users group or a university. In this case, the support you receive is done on an "as available" basis, so if your customer has a problem during summer vacation, you may have to wait until school is back in session to get help.

Writing your own RTOS
It surprises many people, even those in the industry, that about half of all embedded systems projects still use a proprietary, "home-grown" RTOS. There are many reasons for this. Many large companies, in order to protect their intellectual property and maintain tight control over their software, have developed their own RTOSes and continue to maintain them from project to project. This requires a lot of resources, both money and personnel, to do effectively.

Many small companies also write their own RTOS because they have a simple system and feel it is faster and cheaper to write a small polling loop task scheduler than spend money on a bloated, off-the-shelf RTOS with all the unnecessary bells and whistles. This has some merit in many cases, but it is also possible to underestimate the effort involved in implementing even a rudimentary task scheduler. Writing the code may be simple, but debugging it can be very time consuming, especially because many hazards will not appear except under very specific conditions. If exhaustive testing on the actual hardware is not performed before shipping the system, it is likely that intermittent problems will occur in the field that will be very difficult to track down, repeat, and fix.

Synthesizing an RTOS
A very new technology is now available called software synthesis, and in particular RTOS synthesis, that takes the concept of hardware synthesis and applies it to software. An RTOS synthesis tool allows you to write code for specific tasks in C, or theoretically any high level language.

In order for one task to call another task, or wait for another task to complete, a special primitive is inserted in the task source code that looks like a function call and that is recognized by the RTOS synthesis tool. The programmer also creates a configuration file to specify the parameters of each task, such as the task's priority and its period, and to specify the requirements of the operating system such as the scheduling mechanism.

The RTOS synthesis tool is then run on all of the task source code. The RTOS synthesis tool creates the appropriate semaphores and flags for each task and inserts the appropriate code to implement these features at the appropriate points in the task source code. The RTOS synthesis tool creates the necessary data structures and inserts them at the appropriate points in the task source code. The RTOS synthesis tool also creates task management source code to manage the tasks and their asSoCiated flags and semaphores. The RTOS synthesis tool also generates the RTOS source code that controls execution of each task.

An RTOS synthesis tool outputs source code, so it has many of the advantages of an open source RTOS, while at the same time producing code that is optimized for your proprietary system. The learning curve is small because the RTOS expertise is in the tool rather than required to be learned by you.

An RTOS synthesis tool is like a compiler. Originally, programmers needed to understand hardware very well in order to write assembly code. Each program was crafter for the specific hardware and optimized for speed or memory size. Programmers needed to understand stacks and heaps and memory allocation. As compilers became advanced, they did all of the work in those areas, allowing programmers to concentrate on perfecting the application itself. In the same way, an RTOS synthesizer allows a programmer to concentrate on the embedded application.

RTOS Considerations
Many of the issues regarding an RTOS for an SoC are the same as for any other embedded system. These issues can be divided into run-time issues and development-time issues. The first category concerns how the RTOS works and manages tasks in the system. The second category concerns developing the system code and the asSoCiated resource requirements.

Run-Time Issues
The run-time issues of an RTOS can be divided into several categories:

. Maintainability
. Performance
. Predictability
. Reliability
. Scalability
. Size

Maintainability: Maintainability can be both a run-time issue and a development time issue. At run-time, who addresses problems in the field when the RTOS has problems? Obviously, the system manufacturer is ultimately responsible. If you have developed the RTOS in-house or you have synthesized the RTOS, then you will be responsible for fixing the RTOS should problems arise. This can be a plus because you can respond quickly to problems in the field. It can be a negative if you do not have the resources to respond. If you have purchased the RTOS from another company, problems in the field can be offloaded, somewhat, to the RTOS vendor. However, their response time may not be as good as you need and their support is not free.

Performance: Performance can be measured in many different ways, and you must decide which ways are critical for your system. Typically, latency times are important – how long it takes the RTOS to switch from one task to another. This will depend on the task switching mechanism, the processor speed, the task priorities, and the granularity of the internal timer. If an RTOS is preemptive, meaning that the RTOS can suspend a task at any time in order to run a higher priority task, latency times will be more predictable, but preemptive RTOSes are larger, more complex, and more difficult to debug.

Often, engineers are not aware that many RTOSes are not preemptive, but are instead cooperative, meaning each task has full control of the system until it decides to give control back to the RTOS. Microsoft Windows 3.1 was cooperative but Microsoft Windows 95 and later versions are all preemptive. Linux, including embedded Linux, until version 2.6 was cooperative.

Cooperative multitasking works in an embedded system where you have control over each task including drivers and applications. You can ensure in the source code that the task behaves nicely and gives up control to the RTOS at reasonable times. However, if you use canned libraries and application object code, you run a risk that poorly written code will hang the system. If you require a hard RTOS, you should consider using a preemptive RTOS or synthesizing your RTOS in order to meet hard deadlines.

Another performance measure is data throughput. Performance can also be measured by the speed at which applications are executed. A system that is interrupting an application with many high priority tasks will take longer to complete the operation than one in which no higher priority tasks are running. An RTOS with an efficient mechanism for task queuing and swapping will run tasks faster. In many cases, but not all cases, a faster CPU will improve these performance numbers.

Predictability: Predictability is also important in an RTOS. An RTOS that has a best-case latency that is very close to its worst-case latency is better in many situations than one with a very fast best-case and very slow worst-case. The second system can perform better than the first in many cases, but the first system is more predictable. Again, predictability depends on factors such as whether the system is preemptive or cooperative, whether the code has been synthesized or hand written, and the efficiency of the task queuing and swapping mechanisms.

An RTOS that is written by hand must be tested under a variety of different situations, and numbers recorded, in order to determine best-case and worst-case timing constraints. An off-the-shelf RTOS should be characterized by the vendor after exhaustive testing. With a synthesized RTOS, static timing analysis can be performed in many cases in order to determine these numbers without exhaustive testing.

Reliability: The reliability of the RTOS is just one factor, but an important one, in determining the reliability of the entire embedded system. Other factors include the reliability of the board support package (BSP), the application software, the drivers, and the hardware.

Embedded systems using real-time operating systems are prone to certain hazards that can cause the system to hang or cause unwanted or unpredictable behavior. Below is a list and short explanations of these problems.

. Deadlock: A situation where a task is blocked from executing because it is waiting for a resource to become available while that resource is directly or indirectly waiting for the task to continue.
. Priority inversion: A situation where a high priority task is delayed while waiting to access a shared resource even though the resource is free to be used. In effect, the high priority task has been given a very low priority.
. Race conditions: This occurs when the outcome of an embedded system depends on the specific order in which tasks are executed.
. Starvation: A task cannot continue because it is waiting for a resource, but the operating system, usually due to a bug, will not give the task access even though the resource is available.

Some of these hazards can be prevented by the use of a well-designed RTOS and by the enforcement of well-defined rules for writing task source code. Again, the more third-party code you use, particularly compiled libraries and object code, the higher probability that your system will exhibit these kinds of hazards since you have no control over how the code is written.

Some hazards can be pinpointed by a software synthesis tool while the RTOS is being synthesized, allowing the programmer to fix it before compile time or run time. Some potential hazards can be eliminated entirely by the software synthesis tool. Some hazards can only be found by exhaustive testing of the final system under different sets of conditions.

Scalability: Scalability refers to how well you can add functionality to the system and still use the same RTOS. Scalability can be a run-time issue and a development time issue. Systems that are running in the field may require upgrades such that applications and drivers are added to the system. How well does the RTOS accept additional functionality?

Cell phones and PDAs are examples of devices where the user can add applications and the RTOS must support this. Synthesized RTOSes cannot be upgraded by simply adding an application because the synthesis only works when the source code for the entire system is known before synthesis. A synthesized system can only be upgraded by deleting the current system and loading entirely new software including the applications and RTOS.

Size: Code size can be an important factor, especially in consumer goods. Large code requires extra memory that consumes power. With regard to an SoC, a large RTOS can increase the system software size beyond what can be stored in RAM and ROM inside the SoC. In this case, an external memory is required, possibly slowing down the system and definitely increasing the system costs. An off-the-shelf RTOS from a commercial vendor tends to be very large because it must contain functionality to support all possible customers. Home grown and synthesized RTOSes tend to be much smaller and better suited to the memory requirements of an SoC.

Development Time Issues
The development time issues for an RTOS can be divided into several categories:

. Configurability
. Cost
. Driver and Application Libraries
. Maintainability
. Portability
. Scalability
. Standard Interfaces
. Tool Chain Support


Configurability: A home grown RTOS is, of course, as configurable as it gets. An open source RTOS is configurable, but it can be difficult to modify what is usually a complex piece of code. And, once modified, there is always the possibility that functions will break. How to find those broken functions and repair them is a big job.

Modifying object code is nearly impossible, though I have seen it done by a customer in order to temporarily fix a bug until the vendor could fix the source code and recompile (he did not get the Volkswagen Beetle that the company's advertising promised, though).

Synthesized code is very modifiable in that every new synthesis of the code produces new RTOS code. The ways to modify a synthesized RTOS is dependent on the workings of the synthesis tool and how much control the user is given.

Cost: Cost is obviously an important consideration at design time. RTOSes from vendors cost money up front, but can shorten development and testing time. They do not eliminate development and testing time because each embedded system is unique and problems will arise during development. And remember, there is no such thing as a free lunch, or operating system. Linux can be a good choice if you need many of the drivers and applications that have been created, and tested, to run on top of it. If you do not need those features, consider a different, smaller off-the-shelf RTOS or consider writing your own or synthesizing one.

Development time is another cost that engineers may tend to overlook. Longer development time translates not only to the cost of the salaries paid to the engineers but also the lost revenue from a product that gets to market later. For consumer products, this is particularly important. Writing your own RTOS can take a long time, particularly for a complex system. Using an off-the-shelf RTOS can speed up the development time, but only if the engineers are experienced with the particular RTOS, eliminating the learning curve.

Using an off-the-shelf RTOS can speed up development if it allows you to use existing drivers and applications provided by the vendor, or by the open source community. Synthesizing an RTOS can be the fastest way to create a system, especially if the drivers and applications need to be custom written for your system.

Driver and Application Libraries: Two important questions to answer are how many drivers and application programs are available for the RTOS you wish to use and how many of them do you need? The second question is important but sometimes goes unasked. If an RTOS has many drivers available, but all of your hardware is proprietary, then existing drivers do not help you.

For an SoC, this is very often the case since SoCs are so new and the hardware is configurable, meaning a standard driver will not work. If you can use existing drivers and applications and you have access to the source code, software synthesis tools can use the code with minor modifications, if any. If you do not have access to driver and application source code, an off-the-shelf RTOS may be advantageous.

Maintainability: Maintainability can be both a run-time issue and a development time issue. At development time, the question is how the RTOS can be maintained as the system hardware and software changes over time. An off-the-shelf RTOS may be relatively easy to maintain because it is designed by the vendor to support many different applications. It is the vendor's responsibility to maintain the system, though there is always the possibility that the vendor drops support altogether as has happened for many RTOSes in the past.

A home grown RTOS may be difficult to maintain unless engineers are hired specifically for that purpose. A synthesized RTOS is easy to maintain since the synthesis tool can be used over and over again to create a new RTOS for each new system.

Portability: An off-the-shelf RTOS has as much portability as the vendor can give it, which can be a lot or a little. Each new processor requires a new port of the RTOS to the new processor. If the processor is a popular one, chances are good that the vendor will port the RTOS. Of course, the porting process for new processors will take a while.

For a home grown RTOS, the portability depends on how many resources your company wants to spend on porting it to a new processor. This can be a long, lengthy process so most home grown RTOSes only work on one processor or family of processors, limiting your systems to that specific processor for future development.

An RTOS can be synthesized for any processor that has a C compiler because the synthesized RTOS does not rely on specific hardware to assist the RTOS. For this reason, a new RTOS can be synthesized for any processor, even a new processor immediately as it comes onto the market.

Portability is also affected by the peripherals and the hardware platform other than the processor. Off-the-shelf RTOSes often contain drivers for specific peripherals. This is a good thing if your system uses that specific hardware. This is not a good thing if your hardware does not use those supported by the RTOS. SoCs tend to use non-standard, proprietary hardware – the ability to design custom, optimized peripherals is a major advantage of an SoC – so that SoCs do not lend themselves as well to off-the-shelf RTOSes as do PCB based systems.

Scalability: Scalability can be both a run-time issue and a development time issue. How well does the RTOS accept additional functionality? As systems grow, an ideal RTOS will be able to adapt to them. Off-the-shelf RTOSes scale as long as the processor remains the same or mostly compatible with the previous processor. Home grown RTOSes typically can scale only if you have put the effort to design in scalability up front and have the resources to maintain the RTOS over several versions of the system. A synthesized RTOS scales easily because it is less hardware dependent and only requires each processor to have a C compiler.

Standard Interfaces: The off-the-shelf RTOS has the advantage when it comes to standard interfaces. A synthesized RTOS can make use of standard interfaces, but they may need to be modified by the user first. Sophisticated synthesis tools can automatically synthesize to specific standard interfaces if it is designed to do so.

Tool Chain Support: Because a synthesized RTOS is written in C, all development tools that work with C code can easily be used with it. A home grown RTOS, if it is written in C or another standard high-level language, can use these tools also.

Off-the-shelf RTOSes can be used with all development tools and have an additional advantage that some debuggers can be specifically tied into the tool to generate information that might be unavailable for debugging general C code. For example, the off-the-shelf RTOS can have hooks into a debugger to generate information about task latency, and to profile the memory usage, processor usage, and gather other useful information.

A synthesis tool can also generate such hooks that can be inserted into the RTOS code during debugging and not inserted for the release version of the code in order to minimize code size and improve performance.

SoC Issues
Certain of the issues mentioned above are particularly important for SoCs. In particular, these issues are:

. Configurability
. Driver Libraries
. Portability
. Scalability
. Size
. Tool Chain Support

Configurability: One of the main advantages of SoCs, particularly programmable SoCs, is their ability to be configured and customized. In particular, soft processors are designed such that the processor itself is configurable. Many off-the-shelf RTOSes are ported to a specific processor. It is difficult to port an RTOS to a configurable processor, but when it is done, the RTOS is ported to a specific configuration. This limitation requires that to use the RTOS, you must use that particular processor configuration. This eliminates one of the more desirable features of an SoC. A home grown RTOS can be written to the SoC configuration that you are using, but then it needs to be modified if that configuration changes. A synthesized RTOS can be synthesized to any processor configuration that is supported by a C compiler.

Driver Libraries: RTOS support for driver libraries are typically less important for SoCs than for ordinary PCB systems, because SoCs allow you to create custom, optimized, proprietary hardware that require unique drivers. So for all types of RTOSes, many proprietary drivers will need to be written.

Portability: SoCs are designed in a hardware description language like Verilog or VHDL in order to be able to translate that design to any FPGA or ASIC. If the RTOS is not portable, another large advantage of SoCs is lost. Home grown RTOSes are the least portable. Off-the-shelf RTOSes are portable, but only to specific processors with specific configurations that are supported by the vendor. Synthesized RTOSes are portable to any processor with a C compiler, which is practically any processor in existence.

Scalability: The flexibility of SoCs allows for much scalability in terms of hardware resources. Not being able to support scalable systems again reduces the advantage of an SoC. Home grown RTOSes are the least scalable. Off-the-shelf RTOSes are scalable as long as the processor remains constant. Synthesized RTOSes are very scalable.

Size: Most SoCs allow some amount of memory on chip, but not a significant amount because it is not cost effective. An off-the-shelf RTOS generally has a large memory footprint and requires an external memory to store the object code. A homegrown RTOS can be designed to use little memory, but requires effort to perform the optimization. An RTOS synthesis tool performs memory size optimization automatically and produces a tiny footprint that is only as large as the system requires.

Conclusions
There are many choices for an RTOS for your system on a chip. These choices can be divided into three general categories – purchasing an RTOS, writing an RTOS, and synthesizing an RTOS. You can purchase an RTOS in object code format or source code format.

This article has described each choice. This article has also itemized issues regarding the RTOS at run-time and during development that you should take into account. The article examined issues that are specific to SoCs. At this point you should have much of the information needed to begin an evaluation of specific RTOS solutions for your specific SoC requirements.

References and further reading

1. Barr, Michael and Ganssle, Jack, Embedded Systems Dictionary, CMP Books, Lawrence, KS, 2003.
2. Barr, Michael, Programming Embedded Systems, O'Reilly & AsSoCiates, CA, 1999.
3. Li, Qing with Yao, Caroline, Real-Time Concepts for Embedded Systems, CMP Books, Lawrence, KS, 2003.
4. Sridhar, T., Designing Embedded Communications Software, CMP Books, Lawrence, KS, 2003.
5. Zeidman, Bob, Designing with FPGAs and CPLDs, CMP Books, Lawrence, KS, 2002.

Bob Zeidman is the president of Zeidman Technologies (www.zeidman.biz), a company that develops hardware/software codesign tools. He is also president of Zeidman Consulting (www.ZeidmanConsulting.com), a contract research and development firm.

Since 1983, Bob has designed ASICs, FPGAs, and PC boards for RISC-based parallel processor systems, laser printers, network switches and routers, and other real time systems. His clients have included Apple Computer, Cisco Systems, Intel, Cadence Design Systems, and Texas Instruments. Among his publications are technical papers on hardware and software design methods as well as three textbooks –
Designing with FPGAs and CPLDs, Verilog Designer's Library, and Introduction to Verilog.

Bob has taught courses at engineering conferences throughout the world. He earned bachelor's degrees in physics and electrical engineering at Cornell University and a master's degree in electrical engineering at Stanford University.

2007년 5월 8일 화요일

The Top-10 Programmable Logic "How To" articles of 2006

출처: http://www.pldesignline.com/showArticle.jhtml?printableArticle=true&articleId=196801547



From alternative FPGA architectures to implementing three inversions using only two NOT gates (and no XOR gates), here's the "best-of-the-best" from 2006.

By Clive Maxfield / January 05, 2007

Over the last few issues of the Programmable Logic DesignLine newsletter leading up to the holidays, we've been counting down the top "How To" articles of 2006. The rating of these articles is based on the ones the visitors to
www.pldesignline.com read most often. Now, for the very first time, here they are all in one place:


#10 Alternative computing solutions, from single cores to arrays of 'things'

There are many ways of performing computations, including single CPU or DSP processors (chips or cores), multiple processors, arrays of "things", and "great big piles of gates."


#9 The state-of-play in multi-processor and reconfigurable computing

When a conventional processor (core) cannot meet the needs of a target application, it becomes necessary to evaluate alternative solutions such as multiple cores and/or configurable cores.


#8: How to take advantage of partial reconfiguration in FPGA designs.

The capability of designs to leverage partial reconfiguration opens doors to a whole host of applications.


#7: How to invert three signals with only two NOT gates (and *no* XOR gates): Part 2.

In part two of this article, we consider a dynamic solution to our original problem (using a ring oscillator and other "stuff"); also, we learn how to implement a NOT gate using four AND gates!


#6: FPGA Architectures from 'A' to 'Z' – Part 2.

If you are new to FPGAs, there are a bewildering number of different architectures and related concepts; but fear not, because this tutorial explains all.


#5: All About FPGAs.

An industry expert examines field-programmable gate arrays (FPGAs), including current and forthcoming architectures, technologies, and software tools.


#4: How to implement a digital oscilloscope in Structured ASIC fabric.

Structured ASICs provide quicker time-to-market and lower development costs than standard ASICs, while also providing higher performance and lower unit costs than FPGAs.


#3: How to invert three signals with only two NOT gates (and *no* XOR gates): Part 1

Even for hardened logic designers, these solutions will delight and entertain; also, there's a new "Brain Boggler" to be pondered.


#2: FPGA architectures from 'A' to 'Z' – Part 1

If you are new to FPGAs, there are a bewildering number of different architectures and related concepts; but fear not, because this two-part tutorial explains all.


#1: An introduction to different rounding algorithms

The mind soon boggles at the variety and intricacies of the rounding schemes that may be used for different applications. In addition to introducing different techniques, this article provides real-world examples of the types of errors associated with the different rounding schemes applied at various stages throughout a digital filter.


Embarrassingly enough, #3, #2, and #1 are all three that were penned by yours truly . . . just give me a moment, I promised myself I wouldn't cry . . .


Clive "Max" Maxfield is the editor of Programmable Logic DesignLine. Max is the author and co-author of a number of books, including Bebop to the Boolean Boogie (An Unconventional Guide to Electronics), The Design Warrior's Guide to FPGAs (Devices, Tools, and Flows), and How Computers Do Math featuring the pedagogical and phantasmagorical virtual DIY Calculator.


Widely regarded as being an expert in all aspects of computing and electronics (at least by his mother), Max was once referred to as "an industry notable" and a "semiconductor design expert" by someone famous who wasn't prompted, coerced, or remunerated in any way. Max can be reached at
max@techbites.com.

액텔, FPGA에 최적화된 고성능 32bit 프로세서 개발



액텔은 최근 FPGA에 최적화된 고성능 32bit 소형 소프트 코어인 ARM Cortex-M1 프로세서를 발표했다. ARM과 공동으로 개발한 이 프로세서는 라이센스나 로열티가 없으며, 액텔의 플래시 기반 M1 지원(M1-enabled) Fusion 및 ProASIC3 FPGA에서 무료로 사용이 가능하다. Cortex M1 프로세서는 시스템 설계자에게 프로그램 가능한 유연성과 시스템 수준의 통합을 제공하기 때문에 저비용의 고성능 시스템 개발이 가능하다.

ARM의 3단계 Cortex-M3 공급 라인에서 파생된 Cortex-M1 프로세서는 액텔의 M1 지원 Fusion PSC(Programmable System Chip) 또는 ProASIC3 FPGA에서 최대 72MHz로 동작한다. 임베디드 애플리케이션을 위한 적절한 크기와 속도를 지원하고 있으며, M1A301000 ProASIC3 디바이스의 약 20%, 혼성 신호 M1AF600 액텔 Fusion PSC의 약 30%에 해당하는 4,300개의 타일 안에서 구현이 가능하다. Cortex-M1 솔루션은 또한 업계 표준의 AHB 버스와 연결해 서브 시스템을 구축할 수 있으며 프로세서에 주변 기능을 쉽게 추가할 수 있다.

Cortex-M1 프로세서에는 ARM 아키텍처를 대상으로 하는 광범위한 툴과 지식 정보가 지원되며, 이는 라이센스 기반 프로세서에서 제공하는 지원 수준을 훨씬 뛰어넘는 것이다.

액텔은 자사의 웹사이트에서 무료로 다운로드할 수 있는 CoreConsole IDP(IP Deployment Platform), SoftConsole 프로그램 개발 환경 및 액텔 Libero IDE(Integrated Design Environment)를 통해 Cortex-M1 프로세서를 지원할 예정이다.

액텔의 Cortex-M1 프로세서를 지원하는 M1A3P1000 ProASIC3 디바이스와 M1AFS600 Fusion PSC 제품은 오는 3분기에 첫 출시될 예정이며, 본격적인 공급은 4분기에 이루어질 예정이다. M1 디바이스의 가격은 3.95달러부터 시작된다.

Source:
http://www.ednkorea.com/article.asp?articleid=4419

OpenRISC 프로세서용 통합개발환경 ‘OpenIDEA’



다이나릿시스템이 업계 최초로 OpenRISC 프로세서 기반의 통합개발환경인 OpenIDEA를 발표했다. OpenIDEA는 소프트웨어 개발 스튜디오와 시스템 시뮬레이션 그리고 FPGA 보드 연동 기능을 제공한다.

다이니릿시스템에 따르면 최근 SoC 개발붐에 따라 신뢰성을 검증받은 RISC 프로세서에 대한 요구가 커지고 있다. OpenRISC는 무료로 사용이 가능한 공개 프로세서로서 ARM9 코어 수준의 성능을 갖추고 있다.

다이나릿시스템의 기안도 연구소장은 "무료/공개코드 프로세서 중 가장 넓은 사용자 층을 갖고 있는 OpenRISC1200은 32bit RISC 프로세서로 현재 RTL로 공개되어 있다. 또한 소프트웨어 개발환경은 GNU 툴을 기반으로 하고 있다. 하지만 아직 이렇다 할 사용자 편의성을 고려한 통합개발환경이 없다. 다이나릿시스템이 OpenIDEA를 개발하게 된 이유도 이 때문이다."라고 말했다.

OpenRISC의 경우 ISS를 제공하여 사용자의 능력에 따라 개발환경으로 활용이 가능하지만, 기술적인 어려움이 따른다. 프로세싱 코어가 내장된 설계의 경우 하드웨어/소프트웨어를 동시에 검증하는 것이 매우 중요한 부분인데, ISS만으로는 한계가 있기 때문이다.

OpenIDEA는 이러한 문제점들을 해결했다. 먼저, 그래픽 사용자 인터페이스를 만들어 C 프로그램 편집, 컴파일, 디버깅 등을 쉽게 할 수 있다. 둘째, 시스템 시뮬레이터의 기본 기능과 함께 HDL 시뮬레이터와 연동하도록 하여 실질적인 HW/SW 코-시뮬레이션이 가능하다. 셋째, 다이나릿시스템의 시뮬레이션 툴을 활용해 PCB 제작 없이 프로토타이핑을 개발할 수 있다.

OpenIDEA는 SoC 또는 임베디드 시스템에 OpenRISC를 적용하는데 필요한 개발환경이 모두 지원되는 통합 설계환경이다. 기안도 연구소장은 “OpenRISC는 소프트웨어 스튜디어 기능으로 소프트웨어 개발자의 생산성을 높일 수 있고, HW/SW 코-시뮬레이션 기능으로 시스템 통합 시뮬레이션이 가능하여 하드웨어와 소프트웨어를 동시에 검증할 수 있고, FPGA 보드 제작 없이 프로토타이핑을 할 수 있으므로 완벽한 기능 검증이 가능하다.”고 말했다. 한편, 다이나릿시스템은 FPGA에 맵핑된 설계 블록과 호스트 컴퓨터에서 수행되는 시뮬레이터가 USB를 통해 연동되는 FPGA/SW 동시 시뮬레이션 툴인 iNCITE를 함께 출시했다.

다이나릿시스템, www.dynalith.com
글/ 최찬용 기자(eric.choi@rbi-asia.com)

Source:
http://www.ednkorea.com/article.asp?articleid=4423

2007 전마협 하남 하프마라톤대회

지난 3월 31일, 머리털나고 첨으로 10Km 구간에 참가했는데 힘들어 죽을뻔 했슴...^^;
그래도 뛰고 나니깐 완주했다는 뿌듯함이 나름대로 느껴지더라는...

인텔 바이브 기술-개요

http://www.intel.com/cd/products/services/apac/kor/255666.htm

Information from Intel Corporation, 인텔 바이브 기술-작동 방식

http://www.intel.com/cd/personal/computing/apac/kor/our-technology/viiv/334683.htm

2007년 4월 23일 월요일

공학용계산기 사용법: 밑수가 n인 log 값 구하기

하도 오래간만에 수학을 다시 하려니 계산기 사용법이 복잡해서 계산기를 볼 때 마다 숨이 턱턱 막히는데, 간단하다:

공학용 계산기에는 일반적으로 상용로그인 log와 자연로그인 ln 버튼만을 제공하는데,밑수가 n인 log의 값을 구하기 위해서는 ln (자연로그) 버튼을 사용한다:

만약 구해야 할 값이 밑수가 2인 log 0.25 를 구해야 한다면, ln 0.25 / ln 2 의 형식으로 구하면 된다.

즉, 자연로그(숫자) / 자연로그(밑수) 로 계산하면 끝.

from http://lunapapa.egloos.com/

2007년 4월 6일 금요일

전자 메일 보내기: [글로벌 IT이슈 진단]무선충전시대가 열린다 - 전자신문


ETnews

[글로벌 IT이슈 진단]무선충전시대가 열린다
[ 2007-01-31 ]  
  요즘 휴대폰은 만능이다. 사진·e메일·동영상·TV까지 한 대면 모두 다 할 수 있다. 하지만 이런 첨단 휴대폰에도 변하지 않는 원시적인 단점이 있다. 바로 전력을 공급받는 문제, 즉 충전 부분이다. 휴대폰으로 여러 가지를 하다보니 하루라도 충전을 거른 날이면 전원이 꺼질까 노심초사한다. 언제 어디를 가도 휴대폰이 자동으로 충전될 순 없을까. 무선 전력은 상상 속에서만 가능한 일일까.

 

◇'5m까지 쏜다'=작년 연말 미국에선 무선 전력을 기대할 수 있는 흥미로운 논문이 발표됐다. 미국 메사추세츠공과대(MIT) 마린 솔자식 교수팀은 노트북PC, MP3플레이어 배터리를 3∼5m 떨어진 곳에서도 무선으로 충전할 수 있다고 주장했다. 이들의 얘기는 비록 컴퓨터 시뮬레이션에 근거한 것이지만 꽤 먼 거리에서도 무선 충전이 가능하다고 해 큰 관심을 모았다.

이 기술은 '공진(resonance)'을 이용했다. 공진이란 어떤 물체가 외부에서 그 고유 진동 수(초당 진동 횟수)와 같은 진동수를 가진 힘을 받으면 진폭이 증가하는 현상으로, 진동 수가 같은 두 개의 소리굽쇠를 가까이 두고 하나를 때리면 다른 소리굽쇠가 울리는 것이다.

솔자직 교수팀은 소리 대신 전기 에너지를 담은 전자기파를 공진시켜 배터리를 충전할 수 있다고 했다. 에너지 분산을 막기 위해 고안한 특수 안테나를 전원부와 노트북에 각각 설치한 후 전류를 흘리면 공진에 의해 두 개의 안테나 사이에서 에너지가 전달되고 이를 통해 충전할 수 있다고 주장했다.

◇한층 가까워진 무선 충전=솔자직 교수팀의 논문은 아직 이론적인 얘기지만 세계에선 무선 충전이 눈 앞의 현실로 나타나고 있다. 올 초 라스베이거스에서 열린 가전전시회 'CES 2007'에선 세계 여러 기업들이 이를 증명해 보였다.

애리조나에 있는 와일드차지와 미시간 풀톤 이노베이션은 어댑터가 없어도 휴대 가전들을 충전할 수 있는 제품을 선보였다.

와일드차지는 휴대폰·MP3플레이어·디지털 카메라·노트북 등 다양한 종류의 휴대기기들을 마우스패드와 같은 장치 위에 올려 놓으면 동시에 충전할 수 있는 '와일드차저(WildCharger)'를, 풀톤 이노베이션은 유도전류를 응용한 무선 충전 기술 '이커플드(eCoupled)'를 발표했다. 이커플드의 원리는 구체적으로 공개되지 않았지만 전동칫솔의 충전 방식과 같은 것으로 전해졌다.

이 밖에 파워캐스트는 900㎒ 대역 RF통신을 통해 밀리와트(mW) 단위의 작은 전력을 최대 1m까지 전달하는 기술을 선보였다.

◇꿈은 이뤄지나=무선 충전, 즉 무선으로 전력을 전송하기 위한 시도가 최근의 일은 아니다. 에디슨을 뛰어 넘는 천재성에도 불구하고 제대로 평가를 받지 못한 19세기 물리학자, 니콜라 테슬라는 대형 안테나를 통해 전기를 무선으로 전달하는 실험을 한 바 있으며, 영국의 스플래쉬파워는 2002년 전자기파를 이용해 휴대폰·MP3플레이어 등을 충전하는 패드를 일찍이 고안하기도 했다.

하지만 원가·발열·효율 등의 문제로 이 같은 무선 충전 기술이 그동안 상용화되진 못했다. 그러나 상황이 달라지는 것처럼 보인다. 가전 업체들이 신기술들을 적극 채택하고 나섰기 때문이다.

파워캐스트는 필립스와 제휴를 맺고 연내 필립스 가전 제품에 자사의 충전 기술을 탑재할 것으로 알려졌으며 풀톤 이노베이션은 세계적인 자동차 전장 업체인 비스테온과 함께 휴대기기를 충전할 수 있는 차량용 무선충전 장치를 올 여름 내놓을 계획이다. 풀톤은 또 모토로라·모빌리티 일렉트로닉스와 제휴를 맺고 자사의 무선 충전 기술을 산업 표준으로 만들려는 움직임도 보이고 있다.

새롭게 등장한 무선 충전 기술들이 얼마나 효용성이 있고 또 시장에서 성공할 수 있을 지 현재로선 예측하기 어렵지만 모바일 시대를 맞아 충전 기술에도 변화가 시작됐음은 분명해 보인다.



◆'내 휴대폰도 무선 충전한다?'

'내 휴대폰도 무선으로 충전하는 방법이 있다?'

물론 있다. 단 '011'과 '삼성' 휴대폰 사용자야 한다. 먼저 '5, 8, 0, 9, 5, 4, 0'을 순서대로 누른 후 '*'와 '4, 5, 6, 8, 0'을 추가로 입력한다. 또 이어서 '7, 0, 1, 1, 4'와 휴대폰의 '확인' 버튼을 누르고 마지막으로 '0, 2'를 입력하면 휴대폰 배터리 눈금에 불이 들어온 것(완충)을 볼 수 있다.

그러나 이는 실제로 배터리를 충전시키는 것이 아니라 충전된 것처럼 보이게 하는 방법이다. 제조사가 휴대폰을 출하하기 전 품질 검사를 위해 테스트 모드로 들어가 확인하는 것이다.

삼성전자는 "테스트를 위해 전압을 낮추는데 기준 전압이 낮아지면서 순간적으로 배터리 눈금이 다시 올라가는 것일 뿐"이라고 설명했다. 인터넷에서는 이 번호들이 '배터리를 무선 충전하는 법'으로 소개되고 있지만 잘못 다루면 휴대폰을 고장낼 수 있다.



◆국내 현황은 

특허청 산하 특허정보원 사이트에서 '무선 충전'으로 관련 특허를 찾아보니 총 10건이 검색됐다. 이 중 최종 특허로 등록된 것은 6건뿐이었고 나머지는 현재 공개 중이거나 포기 또는 거절된 상태였다. 무선 충전에 관한 국내 기술 개발은 표면적으론 그리 활발해 보이지 않았다.

하지만 국내에도 무선 충전 기술을 집중적으로 연구하는 회사가 있다. 지난 2001년 안동대학교 교수 벤처기업으로 설립된 '제이씨프로텍'이다. 현 안동대 전자공학 교수이자 JC프로텍 대표인 이형주 사장이 개발한 것은 미국 와일드차지, 영국 스플래시파워와 유사한 '무선 충전 패드'다.

JC프로텍의 제품은 코일로 감싸진 송신부 역할의 패드와 같은 코일로 된 수신 모듈로 구성됐다. 송신부에 전원을 넣으면 이곳에서 나오는 방사 전파의 자기장을 수신 코일부에서 받아 들여 패러데이 전자기 유도 법칙에 의해 전기로 변환, 배터리가 충전되는 방식이다.

이런 원리를 통해 패드 위에 휴대폰이나 MP3플레이어 등을 놓기만 하면 자동 충전이 된다. 특히 최대 네대까지 휴대기기들을 동시에 충전할 수 있어 여러 개의 어댑터를 쓸 일이 없어진다.

이 사장은 "자기장의 전달 효율이 낮아 해외업체들도 이를 구현하는 것이 쉽지 않았는데 우리는 특수 설계한 코일 구조로 80∼90% 효율을 확보했다"면서 "충전 시간도 유선과 동일하고 사용 시간도 유선과 똑같다"고 강조했다.

무선 충전 상용화의 또 다른 관건이던 가격 문제도 해소해 패드 1개와 수신 모듈이 내장된 외장형 배터리 2개를 총 2만∼3만원에 시판할 수 있을 것으로 예상한다고 이 사장은 말했다.

현재 JC프로텍은 아이팟용으로 제품을 출시하기 위해 미국 모 기업과 제휴를 논의하고 있으며 6개월 후 상품을 출시할 예정이라고 덧붙였다.

그는 자기장에 따른 인체 영향에 대해서는 "FCC 및 CE, 스웨덴의 전자파 규제를 모두 만족시켜 문제가 없다"고 강조하며 "50cm 정도 떨어져 있어도 충전이 가능한 기술도 연구 중에 있다"고 전했다.

윤건일기자@전자신문, benyun@
출력하기 닫기
Copyrightⓒ 2000-2005 ELECTRONIC TIMES INTERNET CO., LTD. All Rights Reserved.

2007년 3월 30일 금요일

Fwd: [microblaze-uclinux] RTLinux beta release


--------------- Original message -------------
From : "Alejandro Lucero"<alucero@os3sl.com>
To : <microblaze-uclinux@itee.uq.edu.au>
CC :
Date : Sat, 24 Mar 2007 2:36:56 +0900 (KST), Fri, 23 Mar 2007 18:30:40 +0100
Subject : [microblaze-uclinux] RTLinux beta release

Hello,

I'm glad to announce a RTLinux beta release for uClinux/microblaze. This has
been delayed since I'm doing it in my spare time since the official financed
project was finished.

This release has some drawbacks as no floating point support, no debugger and
no smp. The RTLinux patch for uClinux has been tested with uClinux
distribution for Microblaze sources downloaded last December.

You can download the code and some docs at:

http://www.os3sl.com/microblaze_rtlinux.html

I hope people interested in this work help me to improve the documentation
available and report experience working with this software and, of course,
report any problem to this email.

Thank you.

--
Alejandro Lucero
Director T?nico
+34 665 68 71 68
Valencia (SPAIN)
www.os3sl.com

___________________________
microblaze-uclinux mailing list
microblaze-uclinux@itee.uq.edu.au
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/


--

-- / Chang-woo YANG / ---------------------------
------------ http://www.PLDWorld.com ------------
------------------------------------ oOOo oOOo --

2007년 3월 21일 수요일

전자 메일 보내기: Nios II Software Help

Original Page

Page URL: http://www.altera.com/support/ip/processors/nios2/ide/ips-nios2-ide-tutorial.html


Nios II Software Help

GNU Tools Source Files

Nios II IDE Online Help

The Nios II Integrated Development Environment (IDE) provides a searchable, indexed online help system that covers all IDE-related topics. The online help also includes tutorials and FAQs. These help topics are accessible once you install the Nios II embedded processor development tools. The online help is also available in PDF format on the Nios II Literature page.

Tutorials

The Nios II IDE Quick-Start Tutorial:

  • Teaches you how to create, build, and run Nios II software code on a target board
  • Demonstrates the quickest way to create and run a software application

To start the Nios II IDE Quick-Start Tutorial:

  1. Launch the Nios II IDE from the Start Menu or from the System Generation tab in SOPC Builder
  2. Choose Help > Cheat Sheets...
  3. Click Nios II Quick-Start Tutorial
  4. Click OK

The Nios II Software Development Tutorial:

  • Teaches you how to create, build, run, and debug Nios II software code on a target board
  • Provides you with the information needed to create and build a C/C++ application project and its corresponding system library project
  • Explains the various options available and shows you how to edit project properties

To access the tutorial:

  1. Launch the Nios II IDE from the Start Menu or from the System Generation tab in SOPC Builder.
  2. On the Nios II IDE Welcome Page, select the link for the Nios II Software Development Tutorial.

In addition, you can use the following related tutorial on using software components with Nios II processors:

FAQs and Troubleshooting Tips

The IDE includes FAQs and troubleshooting tips that provide information to assist you in developing Nios II software.

To access the FAQs and troubleshooting tips in the IDE:

  1. Select Help Contents from the Help menu.
  2. Select FAQ and Trouble Shooting under Nios II IDE Help -> Reference.

2007년 1월 24일 수요일

Power MOSFET 적용 예가 정리된 곳 (WISDOM Technologies International)

WISDOM Technologies International
 
 
화면 좌측 sub-menu를 클릭하면 관련 적용 block diagram을 확인가능...

2007년 1월 19일 금요일

정보통신 접근성 향상 표준화 포럼

 

CSS Design Korea

CSS Design Korea

  • 이름: CSS Design Korea
  • 개설일: 2005년 4월
  • URL: http://standardmag.org
  • 소개: CDK는 거의 유일한 국내의 웹 표준 관련 커뮤니티 입니다. 웹 표준과 웹 접근성 그리고 관련된 여러가지 주제들을 다루고 있습니다. 포럼을 통해 커뮤니케이션을 형성하고, 위키를 통해 각종 문서 정리 및 모임 추진을 하고 있습니다.

2007년 1월 16일 화요일

Emailing: 수익성 높은 새로운 디자인의 아이팟 나노 모델

뉴스 및 동향

수익성 높은 새로운 디자인의 아이팟 나노 모델
게재: 2007년 01월 04일

By David Carey
President
Portelligent Inc.

Apple사는 2세대 아이팟 나노를 내놓으면서 자사의 인기 있는 플래시 기반 뮤직 플레이어의 디자인을 바꿨다. 전체 아이팟 제품 라인의 중간에 위치하고 있는 2세대 나노는 2기가바이트, 4기가바이트 및 8기가바이트 용량의 모델이 제공되는데, 이들은 각각 500곡, 1,000곡 및 2,000곡 정도의 노래를 저장할 수 있는 용량에 해당한다.

2세대 제품에서 달라진 것은 무엇일까? 가장 눈에 띄는 요소들로부터 시작하자면, Apple사는 케이스 디자인을 재구성하여 스테인리스제 통과 플라스틱제 프론트 케이스의 2부분으로 되어 있던 방식을 버리고 양극화 알루미늄 쉘 하나로 된 형태를 채택했다. 이 새로운 알루미늄 몸체 속에 전자 장치들이 빽빽하게 들어차 있다. 케이스 끝의 캡 부분들을 떼어낸 뒤 (아주 작은) 나사 몇 개를 풀어내면 핵심 전자 장치들을 케이스 통의 한쪽 끝으로부터 끄집어 낼 수 있다.

케이스의 대략적인 구조는 지금은 단종된 Apple사의 아이팟 미니로부터 빌려온 것이다. 마이크로드라이브 기반의 아이팟 미니는 상대적으로 상당히 큰 케이스를 필요로 했으며 전자 패킹도 2세대 나노 모델에서 볼 수 있는 집적도 수준에 미치지 못했지만, 기술 자체는 유사하다. 보호용의 끝 부분 캡을 제외하고는 미니의 경우와 마찬가지로, LCD(이 경우에는 176x132 픽셀의 TFT 디스플레이)를 위한 투명한 아크릴 윈도와 스크롤휠 방식의 어셈블리가 케이스 표면의 연속성을 깨는 유일한 부분들이다.

PortalPlayer와의 차이점

Apple사에서는 기계 재설계와 함께 이 제품의 공급 체인도 크게 변경했지만, 선택된 설계 요소들은 상당 부분 그대로 놔두었다. PortalPlayer를 코어 미디어 프로세서로서 사용하지 않게 된 것이 아마도 가장 큰 변화일 것이다.

Apple 라벨이 붙은 ASIC인 S5L870-B05는 삼성의 제품으로서 모든 오디오 및 스틸 이미지의 디코딩을 맡고 있다. 나노 모델의 CPU에 Apple사의 독점 마킹이 찍혀 있긴 하지만, 라벨을 볼 때 이 삼성 칩 내에 ARM 코어가 탑재되어 있음을 알 수 있다. 6밀리 x 6밀리 이하 크기의 이 다이는 PortalPlayer를 기반으로 하는 나노 모델의 이전 제품과 유사한 언더필 방식의 BGA 패키지로 되어 있다. 그러나 SST사의 별도 NAND 컨트롤러 구성요소를 갖추고 있던 1세대 디자인과는 달리, 이 삼성 CPU는 NAND 인터페이스를 직접 통합시킴으로써 비용과 복잡성을 줄인 것같다.

이 삼성 프로세서는 1메가바이트의 SST 플래시를 코드 일부나 전체를 저장하는 데 사용하고 있으며, Qimonda 32메가바이트 SDRAM이 시스템의 동작 메모리를 제공하는 것은 물론 어쩌면 NAND 플래시로부터 꺼내온 노래 데이터를 위한 버퍼 역할까지도 하고 있는 것같다. 다른 2세대 나노 모델들에 대한 검사 자료를 토대로, 삼성은 32메가바이트 SDRAM의 공급업체로 알려져 있다.

첫번째 나노 모델로부터 이어져 내려온 디자인 요소들 가운데는 Cypress사의 스크롤 휠 컨트롤러(CY8C21001A)와 전력관리용으로 수정된 NXP 칩(PCF50635)이 있다. 역시 오리지널 나노 모델로부터 수정된 Wolfson사의 부품(WM8750S)은 오디오 코덱 및 헤드폰 앰프용으로 선택되어 있다. 후자의 두 부분들은 삼성의 미디어 CPU와 같이 Apple사 고유 라벨이 찍혀 있는데, 이는 아마도 공급체인을 식별하기 힘들게 하려는 시도인 것같다.

보다 명백하게 마킹 되어 있는 다른 전력관리 부품들 가운데는 National Semiconductor사의 DC/DC 컨버터(LM34910B)와 Linear Technology사의 LTC4066(이것은 나노 모델의 USB 인터페이스를 통해 2.2밀리 x 33밀리 x 55밀리 크기의 웨이퍼 형 폴리머 배터리를 충전한다)이 있다.

배터리 자체는 표준 싱글셀 3.7V에서 330밀리암페어시 정도의 용량을 공급하는 것으로 추정된다. 이것은 총 사용가능 에너지 1.2와트시에 해당한다.

비용 면에서는 새로운 삼성의 프로세서(아마도 Apple사가 5 달러 정도에 소싱했을 것으로 보인다)보다 내부 NAND 플래시 메모리에 더 많은 비용이 든다. 최저 밀도의 2기가바이트급 나노 모델에서 조차도 하이닉스의 HY27UV08AG5M 4칩 스택형 NAND(단일 TSSOP 패키지에 들어 있는)는 20 달러 정도의 비용을 차지하고 있는 것같다. 물론 이는 Apple사에 대한 가격 할인과 계약구매 타이밍에 크게 의존하지만 말이다.

SDRAM의 경우와 비슷하게, NAND 플래시에서도 멀티소싱이 중요하다. Toshiba와 삼성은 둘 다 이 새로운 나노 계열을 위한 NAND 플래시의 추가 공급 업체들로 알려져 있다. 이 제품은 TSSOP 패키지의 스택들을 사용하여 8기가바이트의 보다 큰 메모리를 갖추고 있는데, 이 패키지들 각각은 내부에 독자적인 멀티다이 스택들을 포함하고 있다. 시각적 증거와 Staktek사가 공개적으로 제공한 정보를 토대로 해볼 때, Toshiba사는 Staktek사의 TSSOP 패키지 스태킹 기술을 사용하고 있는 것같다.

이 모든 것들을 고려해보면, 2기기바이트 용량의 이 2세대 나노 모델은 액세서리(이어폰, USB 케이블 및 도킹 어댑터)를 포함하여 65달러 범위의 직접생산 및 소재 비용을 가질 것으로 추정된다. 보다 고밀도의 NAND 스택 가격을 다소 높이 잡는다면 4기가바이트 및 8기가바이트 버전의 소재 및 생산비는 각각 87달러 및 132달러 범위가 될 것으로 추정할 수 있다. 세 가지 모델들(2기가바이트, 4기가바이트 및 8기가바이트)의 소매가는 150달러, 200달러 및 250달러로서, 총 마진은 좋아보인다. 이는 로엔드의 경우 56퍼센트에서 하이엔드의 경우 47퍼센트에 이른다. 물론 제품 개발, 마케팅, 출하 및 모든 소프트웨어 라이선스와 관련된 다른 간접 비용들은 이 수치에 포함되어 있지 않지만, 어떠한 경우이든 여전히 상황은 상당히 긍정적이다. 보다 고밀도 NAND의 가격이 다소 떨어진다고 해도, 탑엔드 모델의 마진은 보다 신속하게 개선될 것이다.

최신 나노 모델이 이전 모델에 필적하는 인기를 누릴지는 아직 두고 볼 일이다. 소비자들은 아이팟에 다소 싫증을 느낄지도 모르고, 이 제품 라인의 빠른 진화는 구매자들이 잦은 제품 변화 및 업그레이드를 따라올 수 있는 능력을 소진시켜 버릴지도 모른다. 하지만 시장에 대한 그 같은 질문에는 오직 시간만이 대답해 줄 수 있다. 아직까지는 Apple사가 멋진 디자인에다가 수익성도 높아 보이는 또 다른 아이팟 모델들을 가지고 여전히 오디오 플레이어 시장을 지배하고 있다.

Apple사에서는 기계 재설계와 함께 이 제품의 공급 체인도 크게 변경했지만, 선택된 설계 요소들은 상당 부분 그대로 놔두었다.

Apple사에서는 기계 재설계와 함께 이 제품의 공급 체인도 크게 변경했지만, 선택된 설계 요소들은 상당 부분 그대로 놔두었다.


본 기사는
http://www.eetkorea.com/ART_8800447831_480303_c76a4ab2200701.HTM 에 있는 전자 엔지니어 기사에서 인쇄한 것입니다.

Emailing: Programmable Logic DesignLine | How to maximize FPGA performance

http://www.pldesignline.com/196900804




January 15, 2007

How to maximize FPGA performance

The more that can be done upfront with good coding styles, timing constraints definition, and resource planning, the easier it will be for the downstream tools to achieve timing requirements.

Editor's Note: See also the related Product Release Article.

As FPGAs push the envelope of performance, understanding how to design for maximum performance requires knowledge of the device architecture and design software. Today's FPGAs resemble a true System-on-a-Chip (SoC) with many more sophisticated features than the glue logic FPGAs of the past. To maximize system performance, designers need to use proper design techniques such as defining timing constraints and selecting options in synthesis and implementation that work best for their design. This article describes how to achieve faster timing in the fewest design iterations.

Understanding the architecture
When evaluating a new FPGA architecture, it is important to understand the hardware features and the tradeoffs that can be made in the architecture. Datasheets, user guides, and technical papers on the architectural features should be thoroughly reviewed before moving forward with a design.

The first thing to learn about any FPGA is what makes up the basic fabric of logic. For example, each of the configurable logic blocks (CLBs) in a Xilinx Virtex-5 FPGA contains two slices; and each slice contains four 6-input look-up tables (LUTs), four registers, and dedicated carry logic. For maximum utilization of each slice, it is important to take into consideration the width of the LUTs, the connectivity between the basic elements, and any shared resources.

Many FPGA architectures also contain hard IP blocks, such as embedded memory and blocks used for DSP functions. If a hard-IP block continuously shows up as the source or destination of your critical path, there are a couple of things that can be analyzed to improve the performance. First, check to see if the design is making the most of the block's features and that the synthesis tool is inferring the features you expected from your RTL code. Use the dedicated pipeline registers inside the blocks to reduce the setup and clock-to-out timing. Evaluate the tradeoff between using dedicated blocks versus implementing the same function in slices to allow for placement flexibility. This can especially be important when using a high percentage of hard-IP blocks.

The clocking resources that are utilized in a design can also affect a design's performance. For example, Xilinx Virtex-5 FPGAs have I/O, regional, and global clocking resources. These devices are divided into clock regions which at most, can contain 4 regional clocks and 10 global clocks. During design planning, it is important to analyze how many clock regions are going to be used as well as specific clocks within a clock region. Placing your I/Os so that their interface logic does not require all the clock resources in a clock region gives the implementation tools greater placement flexibility.

Define timing requirements
Synthesis and implementation tools are driven by the performance goals that a user specifies with timing constraints. It is important to constrain all internal clock domains, input and output (I/O) paths, multi-cycle paths, and false paths. Define realistic timing constraints in synthesis order to prevent excessive replication.

In your synthesis report, check for any replicated registers and ensure that timing constraints that might apply to the original register also cover the replicated registers for implementation. When writing timing constraints for implementation, group the maximum number of paths with the same timing requirement first before generating a specific timing constraint. By consolidating constraints, implementation runtime and memory usage can be minimized.

Example of non-consolidated constraints (Xilinx constraint syntax)
TIMESPEC "TS_firsttimespec" = FROM "flopa" TO "flopb" 10ns;
TIMESPEC "TS_secondtimespec" = FROM "flopc" TO "flopb" 10ns;
TIMESPEC "TS_thirdtimespec" = FROM "flopd" TO "flopb" 10ns;

Consolidation of constraints using grouping
INST "flopa" TNM = "flopgroup";
INST "flopc" TNM = "flopgroup";
INST "flopd" TNM = "flopgroup";

TIMESPEC "TS_consolidated" = FROM "flopgroup" TO "flopb" 10ns;

Driving synthesis
For a synthesis tool to create a high-performance circuit, the tool needs to be properly driven by the designer. The first thing a designer needs to consider is proper coding techniques to ensure that inference of behavioral RTL made by the synthesis tool leads to the maximum usage of the architectural features. For example, Xilinx ISE Project Navigator's language templates – available in both Verilog and VHDL – are a great place to get coding examples.

Next, make sure that the synthesis tool has a complete picture of the design. If a design contains IP netlists or any other lower level black-boxed netlists, these netlists should be included in the synthesis project. Although the synthesis tool won't optimize any logic within the netlist, it will have a better understanding of how to optimize the HDL that interfaces to these lower level netlists.

The tool also needs to understand the performance goals of a design using the timing constraints supplied by the designer. If there are critical paths in the implementation that are not seen as critical in synthesis, try Synplicity Synplify PRO's –route constraint to force synthesis to focus on that path. Finally, there are a variety of tool settings in synthesis that should be explored. Refer to Fig 1 for suggested tool settings for Synplify PRO.


1. Suggested tool settings for Synplify PRO.
It is important to start off with a baseline set of tool options and incrementally add new switches to understand the effects. Also note there are a variety of attribute settings that can affect how inference of logic is done and synthesis is optimized. These attributes are an easy way to affect synthesis with out having to re-code (see Table 1)


Table 1. Helpful Synthesis Attributes.*

* For a complete listing of attributes and their functionality, please see the synthesis tool's documentation.

Although timing performance might be enhanced, options that do lead to the replication of logic such as retiming in Synplify PRO can impact area. If the design is affected by high-fanout nets and you want the synthesis tool to reduce that fanout, use fanout attributes specifically on that specific net, versus globally specifying a maximum fanout limit. If hierarchical boundaries are maintained, a designer should make sure that ports are registered at the hierarchical boundaries. If critical paths cross over these hierarchical boundaries, certain optimizations will not be allowed by the synthesis tool. This can lead both to lower performance and higher area utilization. Before moving on to implementation, it is always important to review the warnings in the synthesis report. It is also beneficial to check the RTL schematic view for how the synthesis tool is interpreting the HDL and the technology schematic to understand how the HDL is mapping to the specific FPGA architecture.

Choosing implementation options
Having obtained an acceptable timing estimate from the synthesis tool, use the implementation tools to determine the true performance of the design. The implementation options that can be used are unique for each design depending on the performance goals of the design, the synthesis flow used, and its overall structure. Once the majority of the functionality is defined in the design's HDL and the effort is focused on timing closure, it is beneficial to run a series of different implementations with different sets of options to determine which is the best combination for the design.

ISE Xplorer is an example of a tool that will allow a designer to determine which options work best. ISE Xplorer has been tuned for each Xilinx FPGA architecture to try the best set of combinations. Although initial runtime can be longer because multiple implementations need to be run, once the design has the right set of options, it will likely reduce the number of design iterations to achieve timing closure.

Physical synthesis options in implementation can be used to re-optimize and pack logic based on knowledge of the critical paths of a design, leading to better placement and routing. Note that physical synthesis can lead to increased area due to replication of logic. Like synthesis, if hierarchy is maintained on a design but the critical path crosses those hierarchical boundaries, physical synthesis will not be able to optimize that path and potentially, inefficient packing will occur. To evaluate whether keeping hierarchy is affecting the performance of the design, turn off hierarchy preservation with an attribute or option during implementation. If it does prove to have an impact, reconsider how the hierarchical boundaries are defined.

Evaluating critical paths
By understanding the characteristics of the critical path, a designer can make better decisions on what to do for the next design iteration. A data path is comprised of both logic and interconnect delay. Individual component delays that make up logic delay are fixed. Logic delay can only be reduced if the number of logic levels are reduced or the structure of the logic is changed. By comparison, interconnect delay is much more variable and is dependent on the placement of the logic, routing congestion, and the competition between nets for the fastest routing resources. Before routing the design a quick timing analysis after placement is recommended. Although this timing report will only have estimates for the routing delays, it will give an idea of the critical paths the implementation tools are working on. If the critical paths have a high number of logic levels, designers may want to work on improving the logic levels versus running it through PAR. When the design has an excessive amount of logic levels that lead to many routing interconnects:

  1. Try the different physical synthesis options to see if logic levels can be reduced.
  2. Go back to synthesis and verify that critical paths reported in implementation match what is reported in synthesis. If they are not, use constraints like Synplify PRO's –route to have the synthesis tool focus on these paths.
  3. Review the HDL code to ensure that it takes advantage of the hardware.

In the case where there are few logic levels but the certain data paths are not meeting the performance requirement:

  1. Evaluate fan-out on routes with long delay.
  2. If a critical path contains hard-IP blocks such as RAMBs or DSP48Es, verify the design is taking full advantage of the embedded registers. Also understand when to make the tradeoff between using these hard blocks versus using slice logic.
  3. Analyze clock skew. Large clock skew can be caused by inefficient use of the clock resources in the design.
  4. Perform a placement analysis. If logic appears to be placed far apart from each other, floorplanning of critical blocks may be required. Only floorplan where necessary. Over floorplanning will not give as much flexibility to the tool and could lead to worse performance.
  5. If area groups were created for a design with a previous version of software or prior to many design changes, consider removing those area groups to evaluate whether or not they are negatively affecting placement.
  6. Consider placing hard IP blocks such as embedded memory and DSP blocks.

Conclusion
Today's FPGAs have a variety of high performance features. In order to take full advantage of these features, a few things need to be considered. The more that can be done upfront with good coding styles, timing constraints definition, and resource planning, the easier it will be for the downstream tools to achieve timing requirements. It is also equally important to know what to do next when design requirements are not met in first iteration.

Michelle Fernandez is a technical marketing engineer in the Software Product Marketing Group at Xilinx. Based on the analysis of customer designs, Michelle provides recommendations aimed at improving FPGA design performance and ease of use to the development teams at Xilinx. Michelle joined Xilinx in 1999 and has held a variety of positions in customer support and field applications engineering. She holds a bachelor's of science degree in electrical engineering from University of California at Davis. Michelle can be contacted at: michelle.fernandez@xilinx.com.


2007년 1월 15일 월요일